【发布时间】:2016-10-07 18:47:53
【问题描述】:
我想在 hdfs 中创建 parquet 文件,然后通过 hive 作为外部表读取它。在编写 parquet 文件时,我对 spark-shell 中的阶段失败感到震惊。
Spark 版本:1.5.2 斯卡拉版本:2.10.4 Java:1.7
输入文件:(employee.txt)
1201,satish,25
1202,克里希纳,28
第1203章 39
1204,javed,23
第1205章 23
在 Spark-Shell 中:
val sqlContext = new org.apache.spark.sql.SQLContext(sc)
val hiveContext = new org.apache.spark.sql.hive.HiveContext(sc)
val employee = sc.textFile("employee.txt")
employee.first()
val schemaString = "id name age"
import org.apache.spark.sql.Row;
import org.apache.spark.sql.types.{StructType, StructField, StringType};
val schema = StructType(schemaString.split(" ").map(fieldName ⇒ StructField(fieldName, StringType, true)))
val rowRDD = employee.map(_.split(",")).map(e ⇒ Row(e(0).trim.toInt, e(1), e(2).trim.toInt))
val employeeDF = sqlContext.createDataFrame(rowRDD, schema)
val finalDF = employeeDF.toDF();
sqlContext.setConf("spark.sql.parquet.compression.codec", "snappy")
var WriteParquet= finalDF.write.parquet("/user/myname/schemaParquet")
当我输入我得到的最后一个命令时,
我什至尝试增加执行器内存,它仍然失败。 同样重要的是, finalDF.show() 产生了同样的错误。 所以,我相信我在这里犯了一个逻辑错误。
感谢支持
【问题讨论】:
标签: scala hadoop apache-spark parquet