【问题标题】:Input file name in Spark 1.6.0 View在 Spark 1.6.0 视图中输入文件名
【发布时间】:2018-08-11 12:48:21
【问题描述】:

我无法在 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
我也试过导入函数,但是没有效果

【问题讨论】:

  • 我用的是scala...但你说的是,它只适用于Spark 2.0以上?
  • 它对我有用。 :) 你能用你尝试的方法更新吗?
  • 我已经在下面回答了如何创建临时视图 :) 希望它有助于解决您的问题
  • 感谢您的帮助。你认为这可能是 livy 的问题吗?
  • 另一件事,INPUT__FILE__NAME 不应该工作,因为我使用HiveContext

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


【解决方案1】:

你有create a temp view如下

df.registerTempTable("table")

然后使用input_file_name()。它会完美运行。

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

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

df.createOrReplaceTempView("table")

希望回答对你有帮助

【讨论】:

  • 我想永久创建视图,然后从许多 Spark 应用程序中使用。问题是,我可以在 Hive 中创建视图,但是当我使用 Spark 从 Zeppelin 查询它时,我得到了错误
  • 我对此一无所知。您应该更新问题中的信息。肯定有人会回答你的
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-10-24
  • 1970-01-01
  • 2023-03-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多