apache-spark - Pyspark 中的表格显示来自 CSV 文件的标题

标签 apache-spark hadoop pyspark hive apache-spark-sql

我有一个 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 中做类似的事情。
有人可以建议我一个方法....谢谢🙏提前!

最佳答案

这是 Spark-11374 中的已知问题并关闭为won't fix .
在查询中,您可以有 where 子句 选择除 之外的所有记录'id''name' .

spark.sql("select * from table_id where tmp_id <> 'id' and tmp_name <> 'name'").show(10,False)
#or
spark.sql("select * from table_id where tmp_id != 'id' and tmp_name != 'name'").show(10,False)
另一种方法是使用从 读取文件HDFS .option("header","true") .

关于apache-spark - Pyspark 中的表格显示来自 CSV 文件的标题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62784583/

相关文章:

python - 合并 Spark 数据框中的日期范围

hadoop - Apache Phoenix安装未正确完成

apache-spark - PySpark 连接 ID,然后连接 'date' 列中的年份和月份

apache-spark - Spark 清理作业未运行

java - DL4J 使用 Apache Spark 在 GPU 上运行(不是训练)LSTM 神经网络?

apache-spark - 在用压缩文件替换 HDFS 中的小文件时如何避免破坏事件的 Hive/Presto 查询?

hadoop - 我们如何使用Reducers将结果数据直接插入到外部RDBMS中。您必须确保做什么?以及为什么

apache-spark - 根据 Spark 中的条件获取行索引

scala - 在 1.6 中工作的 Spark ml 管道在 2.0 中不起作用。类型不匹配错误

apache-spark - 如何在 jupyter notebook 中将 spark 数据帧写入 avro 文件格式?