我对Spark(在MacOS上运行)完全不熟悉并且我一直在尝试测试我的PC中的一些.parquet文件,这些文件大小约为120mb,尝试在本地运行它们,并将master设置为{ {1}}。
基本上我目前拥有的操作流程如下......
local[*]
我想问的第一件事,我如何查看镶木地板文件架构?我已经读过一些可能与Hive有关但没有找到任何东西的东西。如果你有任何对我有用的资源,它将会非常适合。
其次,因为我真的不知道我必须在groupBy()中访问的所有镶木地板列名称等等,我只是想在第一个sortBy()中收集所有东西,看看会发生什么等等(一些)进行小规模测试,以便开始使用Spark以及一切如何工作)。但问题是我总是得到给定的错误。有什么我做错了吗?毕竟不应该.collect()吗?
我尝试在某些方面进行打印,但据我所知,它似乎会进入某些日志,我不知道它们是否存储在本地计算机中,或者我如何访问它们以便我可以看到输出?
当谈到Spark配置时,它是最基本的配置。
dataset
.where(...)
.toJavaRDD()
.sortBy(...) // Tried .collect() here. Current 'debug' point.
.groupBy(...) // Tried .collect() here.
.flatMapValues(...)
.mapToPair(...) // Tried .collect() here.
.reduceByKey(...); // Tried .collect() here.
答案 0 :(得分:0)
如果您的数据很庞大,那么在spark中执行收集操作并不好。 Collect基本上将所有数据带到驱动程序。这将导致驱动程序中的内存outOf绑定。除非您完全确定您收集的数据非常小。
要查看您需要执行的数据集/数据框架构
dataset.printSchema
要打印数据集的几行,您可以使用以下内容
dataset.show(10) // number of rows you want to see
或者
dataset.take(10).foreach(println) // takes 10 rows and print
如果要查看随机行进行采样,可以使用
df.select("name").sample(.2, true).show(10)
或者
df.select("name").sample(.2, true).take(10).foreach(println)