scala - Spark 读取为 jdbc 返回所有行作为列名

标签 scala apache-spark pyspark apache-spark-sql

我在 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 具有上述错误记录。

最佳答案

嘿,您可以尝试像这样给出表名。

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()
即使您尝试使用查询来获取,而不是使用
select * from table_name
你应该用这个
select * from db_name.table_name

关于scala - Spark 读取为 jdbc 返回所有行作为列名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63177736/

相关文章:

python - Pyspark 数据帧 : Transforming unique elements in rows to columns

apache-spark - 跨多个 Spark 作业重用 Spark session

scala - 如何使用 Stream 来遍历 Scala 中的树?

scala - 与抽象类相比,使用特征有什么优点?

scala - Spark SQL error..org.datanucleus”已注册

apache-spark - Spark :executor. CoarseGrainedExecutorBackend:驱动程序已解除关联已解除关联

apache-spark - Spark Dataframe 最大列数

python - 如何查找数组的任何元素是否在 pyspark 的范围内

java - UDF 仅从 Spark SQL 中的路径中提取文件名

scala - 如何在 Play 2 模板中访问嵌套模型的属性