【发布时间】:2020-11-20 11:14:21
【问题描述】:
我正在使用 Scala 2.12 中的 Spark 3.x SQL 查询 Spark 的数据库表。我已经按照互联网上给出的示例进行了操作。
我正在使用的数据库:Spark SQL 的数据库和使用 Centos 7。我正在查询的表(示例)具有以下列:
create table example( tutorial_title VARCHAR(22) NOT NULL) ;
var example= spark.read.format("jdbc")
.option("url", "jdbc:hive2://localhost:10000/test2")
.option("dbtable", "example")
.option("user", "username")
.option("password", "123456")
.option("fetchsize", "10")
.option("driver", "org.apache.hive.jdbc.HiveDriver")
.load()
这给了我以下输出:
+-------+-------
|tutorial_title|
+-------+-------
|tutorial_title|
|tutorial_title|
|tutorial_title|
+-------+-------
即重复每一行的列名而不给出数据。我的桌子有 3 行。我尝试更改 db 中的行数,并且我的输出也相应更改。
如果我使用./bin/spark-sql 并选择表格,它会显示实际记录。但是./bin/Spark-shell 将列名作为结果/记录。
spark-sql 和beeline 客户端有正确的记录但是Spark 的read.format("jdbc") 和Spark-shell 有上述错误的记录。
【问题讨论】:
-
创建表有一列,但在响应中,您有 3 列。另外,您是在默认架构还是自定义架构中创建表?
-
一年前,我在 Impala 和 spark 中遇到了相同的标题重复问题,我们修复了它,将读取 Impala 驱动程序数据的方式更改为对 impala 表的配置单元驱动程序读取。可以分享一下hive版本吗,你用的是hive驱动版本吗?
-
对不起,我添加了不同的表格输出。我有一个单列和单列作为输出。我在 test2 模式中创建了表,我可以使用 squirrel SQL 客户端访问它。
-
作为一个整体过程,我下载了Spark 3.x,解压并启动了Spark thrift server。然后我使用直线连接并在 test2 模式中创建了我的表。在这个过程中,我可以在 spark 文件夹中看到 Hive 2.3.7 jar。
-
我得到了答案,这是一个 Hive 驱动程序问题,我们可以使用 Cloudera 的 Hive 驱动程序。检查这些 URL。 stackoverflow.com/questions/48087779/…
标签: scala apache-spark pyspark apache-spark-sql