xv7*_*v70 3 apache-spark pyspark pyspark-sql
RDD非常有用,因为它们允许用户在"行"级别(或json单个对象等)处理数据,而无需将所有数据加载到内存中.驱动程序计算出如何将分布式数据(或指向它的指针)分发到worker中,并且每个分区都按照行/行/对象愉快地执行代码.然后,无需在驱动程序中收集数据,我可以将每个分区的结果保存到单独的文本文件中.
DataFrames.这是如何运作的?我怀疑它不一样,因为我可以用一个使用RDD的小型8节点集群处理一个月的服务器日志,但是一旦我尝试将分布式数据加载sql_context(spark_context).sql.read.json(s3path)到DataFrame中它就会吐出各种各样的内存错误和工作中止.数据集与RDD正确执行的数据集完全相同,相同的集群,相同的时间段.
RDD和DataFrames处理内存加载的方式有什么不同,从某种意义上说,这可能解释了我的结果?请帮助我理解可能推动这些结果的RDD和DataFRames之间的差异.谢谢.
这是一个理解点,我几周前就遇到了这个问题.您正在加载的功能:
sql_context(spark_context).sql.read.json(s3path)
Run Code Online (Sandbox Code Playgroud)
这个代码根据文档,如果你不给模式,你的json中的spark会非常深入,找到构建RDD的类型.这类似于databricks库的加载CSV中的inferSchema.
所以我建议你做的是:
sql.typestoDF()嗯,这是你面临的可能问题.我没有OOM问题,但是加载一些RDD非常快的东西需要几分钟.
| 归档时间: |
|
| 查看次数: |
938 次 |
| 最近记录: |