Как читать CSV со схемой в Pyspark - PullRequest
0 голосов
/ 26 сентября 2019

Я знаю, как читать csv с помощью pyspark, но у меня много проблем с его загрузкой в ​​правильном формате.У моего csv есть 3 столбца, где первый и второй - строки, а третий - список слов.Я не могу загрузить этот последний столбец.

Я пытался с

schema = StructType([
    StructField("_id", StringType()),
    StructField("text", StringType()),
    StructField("links", ArrayType(elementType=MapType(StringType(), StringType())))
])

, но это вызывает ошибку.С Inferschema тоже не работает.

1 Ответ

1 голос
/ 26 сентября 2019

Вам нужно иметь inferSchema="true".Если это вызывает проблемы, считайте все как строку, а затем вы можете использовать ast.literal_eval() из пакета ast для преобразования str в dict.

Вы используете эту функцию:

def read_csv_spark(spark, file_path):

    """
    :param spark: SparkSession or SQLContext
    :param file_path: Path to the file
    :return: Spark Dataframe
    """
    df = (
        spark.read.format("com.databricks.spark.csv")
        .options(header="true", inferSchema="true")
        .load(file_path)
    )
    return df
...