【问题标题】:Can I display column headings when querying via gcloud dataproc jobs submit spark-sql?通过 gcloud dataproc 作业提交 spark-sql 查询时可以显示列标题吗?
【发布时间】:2018-09-27 02:01:29
【问题描述】:

我正在向 dataproc 发出一个 spark-sql 作业,它只显示表中的一些数据:

gcloud dataproc jobs submit spark-sql --cluster mycluster --region europe-west1 -e "select * from mydb.mytable limit 10"

当数据返回并输出到标准输出时,我看不到列标题,我只看到原始数据,空格分隔。我真的希望输出的格式更好,特别是我想看到列标题。我试过这个:

gcloud dataproc jobs submit spark-sql --cluster mycluster --region europe-west1 -e "SET hive.cli.print.header=true;select * from mydb.mytable limit 10"

但它没有任何影响。

有没有办法让 spark-sql 在 dataproc 上显示列标题?

如果有办法让数据显示如下:

+----+-------+
| ID | Name  |
+----+-------+
| 1  | Jim   |
| 2  | Ann   |
| 3  | Simon |
+----+-------+

那就更好了。

【问题讨论】:

    标签: apache-spark-sql google-cloud-dataproc


    【解决方案1】:

    我一直在使用 Dataproc 集群执行一些测试,但似乎无法使用 Spark SQL 检索带有列名的查询结果。但是,这更像是一个 Apache Spark SQL 问题,而不是 Dataproc,所以我也将该标签添加到您的问题中,以便得到更好的关注。

    如果您进入 Dataproc 集群中的 Spark SQL 控制台(通过 SSH 在主服务器中输入 spark-sql),您将看到 SELECT 查询的结果不包含表名:

    SELECT * FROM mytable;
    18/04/17 10:31:51 INFO org.apache.hadoop.mapred.FileInputFormat: Total input files to process : 3
    2       Ann
    1       Jim
    3       Simon
    

    如果改用SELECT ID FROM mytable;,则没有变化。因此,问题不在于gcloud dataproc jobs sbmit spark-sql 命令,而在于Spark SQL 不提供此类数据。

    如果你不一定非要使用 Spark SQL,你可以试试using HIVE。 HIVE 确实提供了您想要的信息类型(包括列名和更漂亮的格式):

    user@project:~$ gcloud dataproc jobs submit hive --cluster <CLUSTER_NAME> -e "SELECT * FROM mytable;"
    Job [JOB_ID] submitted.
    Waiting for job output...
    +-------------+---------------+--+
    | mytable.id  | mytable.name  |
    +-------------+---------------+--+
    | 2           | Ann           |
    | 1           | Jim           |
    | 3           | Simon         |
    +-------------+---------------+--+
    Job [JOB_ID] finished successfully.
    

    【讨论】:

    • 啊,试试gcloud dataproc jobs submit hive 的好建议。我最近避免了这种情况,因为根据我的经验,gcloud dataproc jobs submit spark-sql(很多)更可靠(很多时候我看到 hive 失败,但使用 spark-sql 的相同查询失败)但在这种情况下,hive 可能工作得很好。谢谢。
    • 我不知道 HIVE 比 Spark SQL 更容易出错。我知道 HIVE 使用 HiveQL,这是 SQL 的简化版本,这可能是某些特定查询失败的原因。无论如何,我很高兴 HIVE 能够满足您对此的需求!
    猜你喜欢
    • 2020-02-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-08-19
    • 2020-09-16
    • 1970-01-01
    • 2015-08-31
    • 2018-05-31
    相关资源
    最近更新 更多