有什么方法可以在 pyspark 中读取 Xlsx 文件?还想从每个 columnName 中读取列字符串

数据挖掘 Python 阿帕奇火花 pyspark
2022-02-12 16:01:33

pd 是一个 panda 模块,是读取 excel 的一种方式,但它在我的集群中不可用。我想在没有 pd 模块的情况下阅读 excel。Code1 和 Code2 是我在 pyspark 中想要的两个实现。

代码 1:读取 Excel

pdf = pd.read_excel(Name.xlsx)
sparkDF = sqlContext.createDataFrame(pdf)
df = sparkDF.rdd.map(list)
type(df)

想要在没有 pandas 模块的情况下实现

代码 2:从数据框 df 中的列 colname 获取字符串列表

stringsList = []
columnList = list(df[colname])
for i in range(len(columnList)):
    if type(columnList[i]) != float:
        text = columnList[i]
        stringsList.append(text.lower())    
    else:
        stringsList.append(u'')
return stringsList

我想在 pyspark 中实现这个。

2个回答

pandas 本身在集群上可用吗?如果是这样,您可以尝试使用内置的read_excel().

你也可以试试HadoopOffice库,它包含一个Spark DataSource,也可以作为Spark Package提供,你可以轻松地测试它而无需任何安装:

$SPARK_HOME/bin/pyspark --packages com.github.zuinnote:spark-hadoopoffice-ds_2.11:1.0.4

也有人推荐Spark Excel依赖

你需要crealytics罐子。使用链接-jar下载jar

试试这个,它会有所帮助!

def get_df_from_excel(sqlContext, file_name):
    """    
    This method is intended to create a dataframe form excel file
    :param sqlContext: sqlContext
    :param file_name:  - Address of file 
    :return: dataframe
    """
    return sqlContext.read.format("com.crealytics.spark.excel") \
        .option("useHeader", "true") \
        .option("treatEmptyValuesAsNulls", "true") \
        .option("inferSchema", "true") \
        .option("addColorColumns", "False") \
        .option("maxRowsInMey", 2000) \
        .option("sheetName", "Import") \
        .load(file_name)