各节点共享SQLContext问题。

brockpeng 2017-09-08 11:52:18

object Test {
def main(array: Array[String]): Unit = {
val conf = new SparkConf().setAppName("测试测试")
//.setMaster("spark://192.168.2.232:7077")
// .setJars(Array[String]("file://D:/ideaWorkspace/GDBigDAtaSpark_2/out/artifacts/GDBigDAtaSpark_2_jar/GDBigDAtaSpark_1.jar"))
val sc = new SparkContext(conf)
val sparkSQL = new SQLContext(sc)
val schema = StructType(
StructField("id", StringType, false) ::
StructField("name", StringType, false) :: Nil
)
val rdd = sc.textFile("hdfs://192.168.2.232:8020/user/hive/warehouse/t_test").map(x => x.split("\u0001")).map(r => Row(r(0), r(1)))
sparkSQL.createDataFrame(rdd, schema).registerTempTable("t_test")
val df = sparkSQL.sql("select * from t_test")
//val df = sparkSQL.value.sql("select * from t_test")
df.foreach(row => {
println(s"主键=${row(0).toString}")
import sparkSQL.implicits._
sparkSQL.sql(s"select * from t_test where id=${row(0).toString}")
})
}
}

各位spark大神帮看看, 我在DataFrame遍历时想读取另一个表的数据,但SQLContext会报空指针,请问这该如何解决。
sparkSQL.sql(s"select * from t_test where id=${row(0).toString}")
这一行 会报空指异常。
...全文
329 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
qq_25729999 2017-09-11
  • 打赏
  • 举报
回复
RDD里不能引用RDD,如果另一个表不大,用广播变量,否则用join来实现
LinkSe7en 2017-09-08
  • 打赏
  • 举报
回复
不能在算子里引用SparkContext(包括SQLContext)。换个思路,你这需求可以简单的用SQL join来实现
qq_36722219 2017-09-08
  • 打赏
  • 举报
回复
ssssss
brockpeng 2017-09-08
  • 打赏
  • 举报
回复
有大神指点一下吗,还是我编程方式和思维不对。

1,258

社区成员

发帖
与我相关
我的任务
社区描述
Spark由Scala写成,是UC Berkeley AMP lab所开源的类Hadoop MapReduce的通用的并行计算框架,Spark基于MapReduce算法实现的分布式计算。
社区管理员
  • Spark
  • shiter
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧