我有一个Parquet文件包含多个列。我只想根据列名的一个条件从中选择几个列:如果列名包含一个子字符串,它是我预定义的字符串列表的一部分,我应该选择它。请注意,这与:从spark中的parquet文件中读取特定列的有效方法不同。我需要选择甚至部分匹配任何字符串的列
例如:如果我预定义的字符串列表
string_list= ['area','rank']
&我的Dataframe是:
+----------+----------+------------+--------+----------+------+
| areaname | pagerank | customerid | amount | areacode | page |
+----------+----------+------------+--------+----------+------+
| london | 345 | 22wer | 455 | 100 | 45 |
| germany | 47128 | f234 | 600 | 200 | 33 |
| lebanon | 344 | 45rtf | 700 | 230 | 43 |
+----------+----------+------------+--------+----------+------+
我的预期产出是:
+----------+----------+----------+
| areaname | pagerank | areacode |
+----------+----------+----------+
| london | 345 | 100 |
| germany | 47128 | 200 |
| lebanon | 344 | 230 |
+----------+----------+----------+
我已经尝试先读取文件,然后选择列,如下所示。但我不想一次将整个文件读入内存。我想在阅读时执行select操作
parquet_file = spark.read.format("parquet").load(parquet_path)
required_columns= ['`'+column+'`' for column in parquet_file.columns if any(item in column for item in string_list)]
parquet_file = parquet_file.select(required_columns)
我想知道什么是最有效的记忆方式来做到这一点。我能用Parquet地板吗?
暂无答案!
目前还没有任何答案,快来回答吧!