在Spark 1.6.0 View中输入文件名

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在Spark 1.6.0 View中输入文件名相关的知识,希望对你有一定的参考价值。

我不能在Spark 1.6.0视图中使用input_file_name()函数。它适用于select语句或df.withColumn("path", input_file_name()),但不适用于视图。

例如:

CREATE VIEW v_test AS SELECT *, input_file_name() FROM table

失败。当我使用INPUT__FILE__NAME代替时它也失败了。只是:

SELECT *, input_file_name() FROM table

按预期工作。这是一个已知的错误还是我做错了什么? PS:我可以在Hive中创建视图,但无法从Spark访问它,因为它失败并出现相同的错误:未知函数...

更新: 我使用Zeppelin和livy解释器以及Scala API。我从上面的查询中获得的创建视图的错误是: invalid function input_file_name 我也尝试导入该函数,但它没有任何效果

答案

你有create a temp view如下

df.registerTempTable("table")

然后使用input_file_name()。它会完美无缺。

sqlContext.sql("select *, input_file_name() from table")

对于较新版本的spark,您可以使用以下api创建临时视图

df.createOrReplaceTempView("table")

我希望答案是有帮助的

以上是关于在Spark 1.6.0 View中输入文件名的主要内容,如果未能解决你的问题,请参考以下文章

在 Spark 1.6.0 中调试“检测到托管内存泄漏”

Spark 1.6.0 DataFrame 自加入问题

Spark 1.6.0 DenseMatrix 更新值

SQLContext.sql 上的 Spark NoSuchMethodError(Cloudera 5.8.0 上的 Spark 1.6.0)

Spark Streaming 1.6.0 中 Checkpointing/WAL 的可靠性问题

Spark-1.6.0中的Sort Based Shuffle源码解读