我在S3中有一个文本格式的数据集(.gz),我使用spark.read.csv将文件读入spark。
这是大约100GB的数据,但它包含150列。我只使用5列(所以我减少了数据的广度),我只选择了5列。
对于这种情况,spark会扫描完整的100GB数据,还是只扫描这5列而不扫描所有列(如柱状格式)?
对此有任何帮助将不胜感激。
imp_feed = spark.read.csv('s3://mys3-loc/input/', schema=impressionFeedSchema, sep='\t').where(col('dayserial_numeric').between(start_date_imp,max_date_imp)).select("col1","col2","col3","col4")
答案 0 :(得分:0)
将您的工作流程的第1步设为读取CSV文件并将其另存为snappy压缩ORC或镶木地板文件的过程。
然后转到创建这些文件的人并告诉他们停止它。至少,他们应该切换到Avro + Snappy,因为更容易将初始解析和迁移分解为柱状格式。