spark read as jdbc将所有行作为列名称返回

vlju58qv  于 2021-05-27  发布在  Spark
关注(0)|答案(1)|浏览(646)

我使用Scala2.12中的Spark3.xSQL查询spark的数据库表。我已经学习了互联网上的例子。
我使用的数据库:sparksql的数据库和centos7。我要查询的表(示例)具有以下列:

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|
+-------+-------

i、 e.重复每行的列名,但不提供数据。我的table有三排。我试着改变db中的行数,结果相应地改变了输出。
如果我使用 ./bin/spark-sql 然后选择表,它会显示实际记录。但是 ./bin/Spark-shell 将列名作为结果/记录。
spark sql和beeline客户端具有正确的记录,但spark read.format("jdbc") 而spark shell有上述错误记录。

ep6jt1vc

ep6jt1vc1#

嘿,你能不能试着给这个表起个这样的名字。

var example= spark.read.format("jdbc")
.option("url", "jdbc:hive2://localhost:10000/test2")
.option("dbtable", "test2.example")
.option("user", "username")
.option("password", "123456")
.option("fetchsize", "10")
.option("driver", "org.apache.hive.jdbc.HiveDriver")
.load()

即使您尝试使用query而不是

select * from table_name

你应该用这个

select * from db_name.table_name

相关问题