Skip to content

Commit e4da06c

Browse files
committed
Display message if hive is not built into spark
1 parent 227a0be commit e4da06c

File tree

1 file changed

+21
-13
lines changed

1 file changed

+21
-13
lines changed

python/pyspark/context.py

Lines changed: 21 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@
3535
from pyspark.rdd import RDD, SchemaRDD
3636

3737
from py4j.java_collections import ListConverter
38+
from py4j.protocol import Py4JError
3839

3940

4041
class SparkContext(object):
@@ -621,31 +622,38 @@ class HiveContext(SQLContext):
621622

622623
@property
623624
def _ssql_ctx(self):
624-
if not hasattr(self, '_scala_HiveContext'):
625-
self._scala_HiveContext = self._jvm.HiveContext(self._jsc.sc())
626-
return self._scala_HiveContext
625+
try:
626+
if not hasattr(self, '_scala_HiveContext'):
627+
self._scala_HiveContext = self._get_hive_ctx()
628+
return self._scala_HiveContext
629+
except Py4JError as e:
630+
raise Exception("You must build Spark with Hive. Export 'SPARK_HIVE=true' and run " \
631+
"sbt/sbt assembly" , e)
632+
633+
def _get_hive_ctx(self):
634+
return self._jvm.HiveContext(self._jsc.sc())
627635

628636
def hiveql(self, hqlQuery):
637+
"""
638+
Runs a query expressed in HiveQL, returning the result as a L{SchemaRDD}.
639+
"""
629640
return SchemaRDD(self._ssql_ctx.hiveql(hqlQuery), self)
630641

631642
def hql(self, hqlQuery):
643+
"""
644+
Runs a query expressed in HiveQL, returning the result as a L{SchemaRDD}.
645+
"""
632646
return self.hiveql(hqlQuery)
633647

634648
class LocalHiveContext(HiveContext):
635649

636-
@property
637-
def _ssql_ctx(self):
638-
if not hasattr(self, '_scala_LocalHiveContext'):
639-
self._scala_LocalHiveContext = self._jvm.LocalHiveContext(self._jsc.sc())
640-
return self._scala_LocalHiveContext
650+
def _get_hive_ctx(self):
651+
return self._jvm.LocalHiveContext(self._jsc.sc())
641652

642653
class TestHiveContext(HiveContext):
643654

644-
@property
645-
def _ssql_ctx(self):
646-
if not hasattr(self, '_scala_TestHiveContext'):
647-
self._scala_TestHiveContext = self._jvm.TestHiveContext(self._jsc.sc())
648-
return self._scala_TestHiveContext
655+
def _get_hive_ctx(self):
656+
return self._jvm.TestHiveContext(self._jsc.sc())
649657

650658
def _test():
651659
import atexit

0 commit comments

Comments
 (0)