在Spark 1.6.0 View中输入文件名

时间:2018-03-03 11:47:08

标签: hadoop apache-spark hive apache-spark-sql apache-zeppelin

我不能在Spark 1.6.0视图中使用input_file_name()函数。它适用于选择语句或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
我也尝试导入该函数,但它没有效果

1 个答案:

答案 0 :(得分:1)

您有以下create a temp view

df.registerTempTable("table")

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

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

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

df.createOrReplaceTempView("table")

我希望答案很有帮助