【发布时间】:2017-06-09 19:32:56
【问题描述】:
我是 Hadoop 生态系统的新手,但我仍然对一些事情感到困惑。我正在使用 Spark 1.6.0(Hive 1.1.0-cdh5.8.0,Hadoop 2.6.0-cdh5.8.0)
我有一些 Hive 表存在,我可以使用 HUE Web 界面和 Hive(map reduce)和 Impala (mpp) 执行一些 SQL 查询。
我现在正在使用 pySpark(我认为这背后是 pyspark-shell),我想了解和测试 HiveContext 和 SQLContext。有很多线程讨论了两者之间的差异以及各种版本的 Spark。
使用 Hive 上下文,我可以毫无问题地查询 Hive 表:
from pyspark.sql import HiveContext
mysqlContext = HiveContext(sc)
FromHive = mysqlContext.sql("select * from table.mytable")
FromHive.count()
320
到目前为止一切顺利。由于 SQLContext 是 HiveContext 的子集,我认为基本的 SQL 选择应该可以工作:
from pyspark.sql import SQLContext
sqlSparkContext = SQLContext(sc)
FromSQL = mysqlContext.sql("select * from table.mytable")
FromSQL.count()
Py4JJavaError: An error occurred while calling o81.sql.
: org.apache.spark.sql.AnalysisException: Table not found: `table`.`mytable`;
我将 hive-site.xml 添加到 pyspark-shell。运行时
sc._conf.getAll(
我明白了:
('spark.yarn.dist.files', '/etc/hive/conf/hive-site.xml'),
我的问题是:
- 我能否使用 SQLContext 访问 Hive 表以进行简单查询(我知道 HiveContext 更强大,但对我来说这只是为了理解 东西)
- 如果这是可能的,缺少什么?我找不到任何信息 从我尝试过但似乎不起作用的 hive-site.xml 中
非常感谢
干杯
法比恩
【问题讨论】:
-
HiveContext 是 Spark SQL 执行引擎的一个实例,而不是相反
-
和 SQLContext 一样,不是吗? link
-
我的意思是说这个hivecontext是sqlcontext的扩展。给出的答案是正确的。
标签: apache-spark hive apache-spark-sql