Укажите схему данных pyspark со строкой длиннее 256 - PullRequest
0 голосов
/ 06 сентября 2018

Я читаю источник, который получил описания длиннее 256 символов. Я хочу написать их в Redshift.

Согласно: https://github.com/databricks/spark-redshift#configuring-the-maximum-size-of-string-columns это возможно только в Scala.

В соответствии с этим: https://github.com/databricks/spark-redshift/issues/137#issuecomment-165904691 это должен быть обходной путь для определения схемы при создании кадра данных. Я не могу заставить его работать.

Как мне указать схему с помощью varchar (max)?

df = ...from source

schema = StructType([
    StructField('field1', StringType(), True),
    StructField('description', StringType(), True)
])

df = sqlContext.createDataFrame(df.rdd, schema)

1 Ответ

0 голосов
/ 06 сентября 2018

Redshift maxlength аннотации передаются в формате

{"maxlength":2048}

так что это структура, которую вы должны передать конструктору StructField:

from pyspark.sql.types import StructField, StringType

StructField("description", StringType(), metadata={"maxlength":2048})

или метод псевдонима:

from pyspark.sql.functions import col

col("description").alias("description", metadata={"maxlength":2048})

Если вы используете PySpark 2.2 или более раннюю версию, проверьте Как изменить метаданные столбца в pyspark? для обхода проблемы.

...