Spark 将列名称作为值

问题描述 投票:0回答:1

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

这是数据库中表格的样子:

姓名 电子邮件 地址
德文德拉 [email protected] 博帕尔

我正在使用 DatabricksJDBC42.jar 和 spark 版本 3.3.1

如您所见,它显示的是列名而不是实际值。我怎样才能让它显示真实姓名?

scala apache-spark databricks
1个回答
0
投票

您可以使用

query
代替
dtable
并检查数据是否正在获取,然后您可以返回
dtable
以了解您的特定用例。我知道我们可以使用
query
dtable
但由于这里没有太多上下文,我只能建议您采用自下而上的方法。

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()
© www.soinside.com 2019 - 2024. All rights reserved.