擅长:python、mysql、java
<p>如果你有一个巨大的文件,为什么不分块使用pandas数据帧而不是一次加载所有文件,比如:</p>
<pre><code>import pandas as pd
df_pd = pd.read_csv('myfilename.csv',chunksize = 10000)
for i,chunk in enumerate(df1):
if i==0:
df_spark = sqlContext.createDataFrame(chunk)
else:
df_spark = df_spark.unionAll(sqlContext.createDataFrame(chunk))
</code></pre>
<p>df\u spark将是您所需的spark数据帧。这是低效的,但它会起作用。对于实现相同功能的其他方法,您可以参考此<a href="https://stackoverflow.com/questions/38679474/how-to-load-data-in-chunks-from-a-pandas-dataframe-to-a-spark-dataframe">question</a></p>
<p>另一种可能的方法是使用rdd的inferSchema方法,但您需要在csv文件中有列名才能使用,请参阅<a href="https://spark.apache.org/docs/1.1.0/api/python/pyspark.sql.SQLContext-class.html#inferSchema" rel="nofollow noreferrer">this</a>。
所以你可以做一些类似的事情:</p>
^{pr2}$