【问题标题】:Scala script creating DF and temp tables in spark shell - issues在 Spark shell 中创建 DF 和临时表的 Scala 脚本 - 问题
【发布时间】:2018-12-06 20:24:35
【问题描述】:
I have loaded multiple parquet files to create multiple DFs, but when I am using for loop, I am getting errors. 

Markdown and HTML are turned off in code blocks:
val sqlContext = new org.apache.spark.sql.SQLContext(sc)
val url_1 = "s3://file_path/folder1.parquet/*"
val url_2 = "s3://file_path/folder2.parquet/*"
val url_3 = "s3://file_path/folder3.parquet/*"
for (url <- Array(url_1 ,url_2 ,url_3)) var parqfile=sqlContext.read.load(url)
for (item <- Array("tb1","tb2","tb3")) parqfile.registerTempTable(item)

但我不能这样做,因为它说我有 :1: 错误:简单表达式的非法开始

请帮忙... 谢谢!

【问题讨论】:

  • 9 张桌子?还是 3 张桌子?
  • @thebluephantom 3 个表
  • 好的,但从来没有这样看,但不能完全理解。 tb1 来自 url1?
  • 想我明白了啊哈

标签: scala amazon-web-services hadoop


【解决方案1】:

这样做的正确方法,SPARK 2.x 不是 1.6,但同样的原则适用。简单得多,使用 DF 作为源。请注意 {}。

val tb1 = spark.sparkContext.parallelize(Seq(
    ("A", "X", "done"),
    ("A", "Y", "done"),
    ("C", "Y", "done"),
    ("B", "Y", "done")
  )).toDF("Company", "Type", "Status")
val tb2 = spark.sparkContext.parallelize(Seq(
    ("A", "X", "done"),
    ("B", "Y", "done")
  )).toDF("Company", "Type", "Status")
val tb3 = spark.sparkContext.parallelize(Seq(
    ("A", "X", "done")
  )).toDF("Company", "Type", "Status")

for (tb <- Array(tb1 , tb2 , tb3)) {
     tb.createOrReplaceTempView(s"tb")
}

tb2.show // etc.

【讨论】:

  • var count = 0 for (url
  • 谢谢@thebluephantom 我对 for 循环进行了更改,它起作用了。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-04-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-12
  • 1970-01-01
  • 2016-02-07
相关资源
最近更新 更多