通过 gcloud dataproc jobs submit spark-sql 查询时可以显示列标题吗?
Can I display column headings when querying via gcloud dataproc jobs submit spark-sql?
我正在向 dataproc 发布一个 spark-sql 作业,它只显示来自 table:
的一些数据
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 |
+----+-------+
那就更好了
我一直在使用 Dataproc 集群执行一些测试,看起来无法使用 Spark SQL 检索包含列名的查询结果。但是,这更像是一个 Apache Spark SQL 问题,而不是 Dataproc,所以我也将该标签添加到您的问题中,以便它得到更好的关注。
如果您进入 Dataproc 集群中的 Spark SQL 控制台(通过 SSH 在主节点中输入 spark-sql
),您将看到 SELECT查询不包括table姓名:
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.
我正在向 dataproc 发布一个 spark-sql 作业,它只显示来自 table:
的一些数据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 |
+----+-------+
那就更好了
我一直在使用 Dataproc 集群执行一些测试,看起来无法使用 Spark SQL 检索包含列名的查询结果。但是,这更像是一个 Apache Spark SQL 问题,而不是 Dataproc,所以我也将该标签添加到您的问题中,以便它得到更好的关注。
如果您进入 Dataproc 集群中的 Spark SQL 控制台(通过 SSH 在主节点中输入 spark-sql
),您将看到 SELECT查询不包括table姓名:
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.