PySpark Как читать CSV в Dataframe и манипулировать им

Я новичок в pyspark и пытаюсь использовать его для обработки большого набора данных, который сохраняется в виде файла csv. Я хотел бы прочитать CSV-файл в искровом фрейме данных, удалить некоторые столбцы и добавить новые столбцы. Как мне это сделать?

У меня проблемы с переносом этих данных в информационный фрейм. Это урезанная версия того, что я имею до сих пор:

def make_dataframe(data_portion, schema, sql):
    fields = data_portion.split(",")
    return sql.createDateFrame([(fields[0], fields[1])], schema=schema)

if __name__ == "__main__":
    sc = SparkContext(appName="Test")
    sql = SQLContext(sc)

    ...

    big_frame = data.flatMap(lambda line: make_dataframe(line, schema, sql))
                .reduce(lambda a, b: a.union(b))

    big_frame.write \
        .format("com.databricks.spark.redshift") \
        .option("url", "jdbc:redshift://<...>") \
        .option("dbtable", "my_table_copy") \
        .option("tempdir", "s3n://path/for/temp/data") \
        .mode("append") \
        .save()

    sc.stop()

Это выдает ошибкуTypeError: 'JavaPackage' object is not callable на этапе уменьшения.

Можно ли сделать это? Идея сокращения до фрейма данных заключается в том, чтобы иметь возможность записать полученные данные в базу данных (Redshift, используя пакет spark-redshift).

Я также пытался использоватьunionAll(), а такжеmap() сpartial() но не могу заставить его работать.

Я запускаю это на EMR Amazon, сspark-redshift_2.10:2.0.0и драйвер JDBC AmazonRedshiftJDBC41-1.1.17.1017.jar.

Ответы на вопрос(1)

Ваш ответ на вопрос