【问题标题】:How to pass parameters to spark-SQL, not spark-scala?如何将参数传递给 spark-SQL,而不是 spark-scala?
【发布时间】:2017-12-07 08:25:53
【问题描述】:

我想用一个参数从命令行运行spark-sql

$ spark-sql myscript.sql hdfs://mydir/myfile.tsv

myscript.sql中应该使用参数

LOAD DATA LOCAL INPATH $PARAM1 INTO TABLE T;

PS:我知道如何在spark-shellspark-submit 中做到这一点。但这不是我想要的。

【问题讨论】:

  • spark-sql --help 没有帮助?
  • 我从spark-sql --help 看不到如何使用SQL 脚本中的参数(见INPATH $PARAM1)。

标签: apache-spark apache-spark-sql


【解决方案1】:

通过spark-sql 中的-d 选项传递参数。您可以使用多个 -d 传递多个参数。

$ spark-sql -d INPUT=hdfs://mydir/myfile.tsv

那么你就可以在SQL代码中使用这个INPUT变量了:

CREATE TABLE MyTable (
    ID              STRING,
    VALUE           STRING
)
ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.OpenCSVSerde'
WITH SERDEPROPERTIES (
    "separatorChar" = "\,",
    "quoteChar"     = "\""
)
STORED AS TEXTFILE;

LOAD DATA LOCAL INPATH '${INPUT}' INTO TABLE MyTable;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-09-11
    • 1970-01-01
    • 2016-06-03
    • 1970-01-01
    • 2017-03-24
    • 1970-01-01
    • 2017-08-01
    相关资源
    最近更新 更多