PySpark: как добавить схему в канал rdd.toDF () - PullRequest
0 голосов
/ 17 октября 2019

Я ищу документацию о том, как добавить схему в трубу PySpark при преобразовании rdd в Dataframe

У меня есть следующий канал

result_columns=[
    "src",
    "dst",
    "other1",
    "other2",
    "other3",
    "other4",
    "other5"
]

result_schema=StructType(
[
    StructField("src",StringType(), False),
    StructField("dst",StringType(), False),
    StructField("other1",StringType(), True),
    StructField("other2",LongType(), False),
    StructField("other3",LongType(),True),
    StructField("other4",DoubleType(), True),
    StructField("other5",TimestampType(), False)
]
)

result_df=step1_df \
  .rdd \
  .somesteps() \
  .reduceByKey(lambda x,y: x + y) \
  .map(lambda x : myfunction(x)) \
  .flatMap(lambda list: [x for x in list] ) \
  .toDF(result_columns) \
  .collect()

Теперь я хочу указатьтипы данных каждого столбца Что работает, но не распознает столбцы типов данных с только значениями NULL правильно, это

.toDF(result_columns,sampleRatio=0.2)

с sampleRatio между 0 и 1

, которое я хочу передатьСхема для команды toDF

Я попробовал следующие подходы:

.toDF(result_columns,result_schema)

это не удается с ошибкой TypeError: '<' не поддерживается между экземплярами StructType и float'</strong>

.toDF(result_columns,result_schema)

с ошибкой TypeError: toDF () получил несколько значений для аргумента' схема '

.toDF(result_columns,schema=result_schema, samplingRatio=None, verifySchema=True)

с ошибкой TypeError: toDF () получил несколько значений для аргумента 'схема'

.toDF(result_columns,6)

или ввод любого другого числа работает без ошибок, но не изменяет окончательные типы данных

Чтоя делаю неправильно, где труба соmmand для toDF (), документированный для PySpark?

...