【发布时间】:2017-08-08 04:02:17
【问题描述】:
我正在尝试使用 spark JDBC 连接到 HiveTable,代码如下:
val df = spark.read.format("jdbc").
option("driver", "org.apache.hive.jdbc.HiveDriver").
option("user","hive").
option("password", "").
option("url", jdbcUrl).
option("dbTable", tableName).load()
df.show()
但我得到的返回只是一个带有修改列名的空数据框,如下所示:
--------------|---------------|
tableName.uuid|tableName.name |
--------------|---------------|
我尝试以多种方式读取数据帧,但结果始终相同。 我正在使用 JDBC Hive 驱动程序,这个 HiveTable 位于 EMR 集群中。该代码也在同一个集群中运行。 任何帮助将不胜感激。 谢谢大家。
【问题讨论】:
-
您是否尝试使用 sqlContext 访问 hive 表?
-
你的意思是:sqlContext.read.jdbc(url, tableName, properties)?我已经尝试过并得到了相同的结果。你认为它可能与 HiveDriver 有某种关系吗?
-
default数据库中的 Hive 表(tableName) 里面有数据吗? -
我找到了解决方法。我没有访问配置单元表,而是使用元存储 URL 直接访问配置单元元存储。这可以通过在 SparkContext 中设置选项然后使用 SparkSession.read.table 方法读取表来完成。该选项可以通过 hive.metastore.uris 选项进行设置。
标签: scala apache-spark jdbc hive