使用spark将CSV文件读取到中pandas
是实现将CSV文件读取到内存的最终目标的一种round回方法。
似乎您可能误解了此处使用的技术的用例。
Spark用于分布式计算(尽管可以在本地使用)。通常,它太重了,无法用于简单地读取CSV文件。
在您的示例中,该sc.textFile
方法将简单地为您提供火花RDD,该火花RDD实际上是文本行列表。这可能不是您想要的。不会执行类型推断,因此,如果您想对CSV文件中的一列数字求和,则将无法执行,因为就Spark而言,它们仍然是字符串。
只需使用pandas.read_csv
并将整个CSV读取到内存中即可。熊猫会自动推断每列的类型。Spark不会这样做。
现在回答您的问题:
:
是。toPandas()
会将Spark DataFrame转换成Pandas DataFrame,它当然在内存中。
否。熊猫运行自己的计算,spark和pandas之间没有相互作用,仅存在 一些 API兼容性。
否。例如,Series
对象具有interpolate
PySparkColumn
对象中不可用的方法。Pandas API中有很多方法和函数,而PySpark API中没有。
绝对。实际上,在这种情况下,您甚至根本不应该使用Spark。pandas.read_csv
除非你是一个工作很可能会处理你的使用情况 庞大 的数据量。
尝试使用简单,技术含量低,易于理解的库来解决您的问题,并且 仅 在需要 时才 去处理更复杂的问题。很多时候,您将不需要更复杂的技术。