spark java jdbcrdd_Spark SQL Scala - 在JDBCRDD中获取列名

我是Spark和Scala的新手 . 我试图从SQL服务器中的过程中获取内容以在Spark SQL中使用它 . 为此,我通过Scala(Eclipse)中的JDBCRDD导入数据,并从该过程生成RDD .

创建RDD后,我将其注册为临时表,然后使用sqlContext.sql(“选择查询以选择特定列”) . 但是当我在select查询中输入列名时,它会抛出一个错误,因为我在RDD和临时表中都没有列名 .

请在下面找到我的代码:

val driver = "com.microsoft.sqlserver.jdbc.SQLServerDriver"

val url = XXXX

val username = XXXX

val password = XXXX

val query = "select A, B, C, D from Random_Procedure where ID_1 = ? and ID_2 = ?"

// New SparkContext

val sc = new SparkConf().setMaster("local").setAppName("Amit")

val sparkContext = new SparkContext(sc)

val rddData = new JdbcRDD(sparkContext, () =>

DriverManager.getConnection(url, username, password),

query, 1, 0, 1, (x: ResultSet) => x.getString("A") + ", " +

x.getString("B") + ", " + x.getString("C") + ", " +

x.getString("D")).cache()

val sqlContext = new SQLContext(sparkContext)

import sqlContext.implicits._

val dataFrame = rddData.toDF

dataFrame.registerTempTable("Data")

sqlContext.sql("select A from Data").collect.foreach(println)

当我运行此代码时,它会抛出一个错误:无法解析给定输入列的“代码”_1;

但是当我运行:sqlContext.sql(“select * from Data”) . collect.foreach(println)它打印所有列A,B,C,D

我相信我没有在我创建的JdbcRDD中获取列名,因此它们在临时表中无法访问 . 我需要帮助 .

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值