Apache spark S3会选择加速拼花文件的火花分析吗?
您可以使用和,但只能用于CSV和JSON文件。我猜s3select不适用于柱状文件格式,因为它不会有多大帮助 假设我们有一个拥有Apache spark S3会选择加速拼花文件的火花分析吗?,apache-spark,amazon-s3,parquet,Apache Spark,Amazon S3,Parquet,您可以使用和,但只能用于CSV和JSON文件。我猜s3select不适用于柱状文件格式,因为它不会有多大帮助 假设我们有一个拥有名、姓和国家列的数据湖 如果数据存储为CSV文件,并且您运行类似于peopleDF.select(“first_name”).distinct().count()的查询,那么S3将把所有列的所有数据传输到ec2集群以运行计算。这是非常低效的,因为我们不需要所有的姓氏和国家数据来运行此查询 如果数据存储为CSV文件,并且您使用S3 select运行查询,则S3将仅传输fi
名
、姓
和国家
列的数据湖
如果数据存储为CSV文件,并且您运行类似于peopleDF.select(“first_name”).distinct().count()
的查询,那么S3将把所有列的所有数据传输到ec2集群以运行计算。这是非常低效的,因为我们不需要所有的姓氏
和国家
数据来运行此查询
如果数据存储为CSV文件,并且您使用S3 select运行查询,则S3将仅传输first_name
列中的数据以运行查询
spark
.read
.format("s3select")
.schema(...)
.options(...)
.load("s3://bucket/filename")
.select("first_name")
.distinct()
.count()
如果数据存储在拼花地板数据池中,并且运行peopleDF.select(“first_name”).distinct().count()
,则S3将只将first_name
列中的数据传输到ec2集群。拼花地板是一种柱状文件格式,这是其主要优点之一
因此,根据我的理解,S3 Select无助于加快对拼花地板数据湖的分析,因为柱状文件格式提供了S3 Select现成的优化
我不确定,因为同事肯定我错了,因为。您能否确认列式文件格式提供了S3 Select提供的主要优化功能?这是一个有趣的问题。我没有任何实数,尽管我在hadoop aws模块中完成了S3 select绑定代码。AmazonEMR和databricks都有一些价值 对于CSV IO Yes,S3 Select将在对源数据进行积极过滤的情况下加快速度,例如许多GB的数据,但返回的数据不多。为什么?虽然读取速度较慢,但可以节省VM的有限带宽 不过,对于拼花地板,工作人员将一个大文件拆分为多个部分,并跨这些部分安排工作(假设使用了snappy之类的可拆分压缩格式),因此>1名工作人员可以在同一个文件上工作。而且他们只读取一小部分数据(=带宽收益减少),但他们确实在该文件中四处搜索(=需要优化搜索策略,否则会导致中止和重新打开HTTP连接的成本) 如果S3集群中有足够的容量,并且您已经调整了S3客户端设置(对于s3a,这意味着:搜索策略、线程池大小、http池大小)以提高性能,那么我不认为S3集群中的拼花读取可以胜过spark集群
就像我说的:我不确定。欢迎致电 为s3 select on拼花地板[1]设计了这款spark套装
[1] 在拼花地板数据池上运行
peopleDF.select(“first_name”).distinct().count()
时,first_name
、last_name
和country
列中的所有数据是否都会传输到ec2集群,还是只传输了first_name
列中的数据?我将运行一些基准测试并向您报告。感谢您的帮助。S3 Select API仅支持按行筛选和选择。计数之类的事情是在集群中完成的。哦,关于s3select和parquet的另一个细节是:Select的输出返回为JSON或CSV,因此这里不涉及普通的parquet引擎(其谓词向下推等)。所以我不知道它是如何被连接到EMR或Databricks中的。问他们……我的回答很模糊,很抱歉你这么想。如果需要详细信息,请查看“添加基于文件系统生成器的openFile()API以匹配createFile();S3A通过此API实现S3选择”;或者查看中的代码并在中进行测试