我正在编写一个Spark作业,从S3下载包含json行的文件,将它们转换为DataSet并将它们写入Parquet文件。
javaSparkContext.parallelize(files)
.foreach((VoidFunction<String>) file -> {
try {
List<String> jsons = Lists.newArrayList();
...
Dataset<String> eventsDS = spark.createDataset(jsons);
Dataset<Row> eventsDF = spark.read().json(eventsDS);
eventsDF.write().parquet("parquet/")
} catch (Exception ex) {
ex.printStackTrace();
}
});
在我的笔记本电脑上运行时运行时的错误
java.lang.NullPointerException
at org.apache.spark.sql.SparkSession.sessionState$lzycompute(SparkSession.scala:128)
at org.apache.spark.sql.SparkSession.sessionState(SparkSession.scala:126)
at org.apache.spark.sql.Dataset.<init>(Dataset.scala:170)
at org.apache.spark.sql.Dataset$.apply(Dataset.scala:61)
at org.apache.spark.sql.SparkSession.createDataset(SparkSession.scala:457)
at org.apache.spark.sql.SparkSession.createDataset(SparkSession.scala:494)
at com.amazon.mobiletargeting.ParquetExporter.lambda$export$faf5744a$1(ParquetExporter.java:166)
我的问题是以Why does this Spark code make NullPointerException?
的副本为借口进行投票我更新了下面的评论,说明我的Spark数据集不是在UDF的上下文中创建的,而是在RDD上的forEach中创建的。
任何建议都非常感谢! 兰吉特