scala 将列名作为值的Spark

beq87vna  于 2023-04-21  发布在  Scala
关注(0)|答案(2)|浏览(132)

Spark正在将列名作为值给出。我正在尝试从Databricks获取数据
我使用以下代码:

val query="SELECT * FROM test1"

val dataFrame = spark.read
  .format("jdbc")
  .option("url", url)
  .option("user", user)
  .option("password", password)
  .option("dbtable", s"""( $query ) t""")
  .load()

dataFrame.show()

使用这段代码,我得到了这样的输出:

Output

+----+-----+-------+
|name|email|address|
+----+-----+-------+
|name|email|address|
|name|email|address|
+----+-----+-------+

这就是DB中的表:
| 名称|电子邮件|地址|
| --------------|--------------|--------------|
| 代文德拉| dev2311999@gmail.com |博帕尔|
我正在使用DatabaseJDBC42.jar和spark版本3.3.1
如你所见,它显示的是列名而不是实际值。我怎样才能让它显示实际的列名呢?

wtzytmuj

wtzytmuj1#

你能用query代替dtable并检查数据是否被获取,然后你可以回到dtable用于你的特定用例。我知道我们可以使用querydtable,但由于这里没有太多的上下文,我只能建议你做一个自底向上的方法。

val query="SELECT * FROM test1"

val dataFrame = spark.read
  .format("jdbc")
  .option("url", url)
  .option("user", user)
  .option("password", password)
  .option("query", s"$query")
  .load()

dataFrame.show()
jckbn6z7

jckbn6z72#

我认为你还必须配置driver选项:

.option("driver", "com.databricks.client.jdbc.Driver")

相关问题