Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Apache spark S3会选择加速拼花文件的火花分析吗?_Apache Spark_Amazon S3_Parquet - Fatal编程技术网

Apache spark S3会选择加速拼花文件的火花分析吗?

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和JSON文件。我猜s3select不适用于柱状文件格式,因为它不会有多大帮助

假设我们有一个拥有
国家
列的数据湖

如果数据存储为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选择”;或者查看中的代码并在中进行测试