【发布时间】:2020-10-28 06:16:21
【问题描述】:
我有一个 csv 文件,其内容如下,第一行有一个标题。
id,name
1234,Rodney
8984,catherine
现在我可以在 hive 中创建一个表来跳过标题并适当地读取数据。 Hive 中的表
CREATE EXTERNAL TABLE table_id(
`tmp_id` string,
`tmp_name` string)
ROW FORMAT SERDE
'org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe'
WITH SERDEPROPERTIES (
'field.delim'=',',
'serialization.format'=',')
STORED AS INPUTFORMAT
'org.apache.hadoop.mapred.TextInputFormat'
OUTPUTFORMAT
'org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat'
LOCATION 's3://some-testing/test/data/'
tblproperties ("skip.header.line.count"="1");
Hive 中的结果
select * from table_id;
OK
1234 Rodney
8984 catherine
Time taken: 1.219 seconds, Fetched: 2 row(s)
但是,当我在 pyspark 中使用同一张表(运行相同的查询)时,我什至在 pyspark 结果中看到文件的标题,如下所示。
>>> spark.sql("select * from table_id").show(10,False)
+------+---------+
|tmp_id|tmp_name |
+------+---------+
|id |name |
|1234 |Rodney |
|8984 |catherine|
+------+---------+
现在,我怎么能忽略这些出现在 pyspark 的结果中。 我知道我们可以读取 csv 文件并添加 .option("header",True) 来实现这一点,但是我想知道在查询表时是否有办法在 pyspark 中做类似的事情。
有人可以建议我一个方法....谢谢????提前!!
【问题讨论】:
标签: apache-spark hadoop pyspark hive apache-spark-sql