Как передать переменные аргументы в Spark Dataframe с помощью PySpark? - PullRequest
0 голосов
/ 11 февраля 2019

Я использую библиотеку Crealytics Spark для чтения рабочей книги Excel в фрейм данных Spark с помощью записной книжки Python для Databricks.

Закодированный таким образом, работает нормально:

df = spark.read.format("com.crealytics.spark.excel")
     .option("useHeader","true")
     .option("dataAddress","'Sheet1'!")
     .load("/FileStore/tables/Test.xlsx")

Я хотел бы прочитать динамический список опций из таблицы в структуру PySpark (например, list или dict) и передать их в DataFrame как varargs.

Однако, он терпит неудачу даже при попытке передатьтолько в одном варианте:

test = {"useHeader":"True"}

df = spark.read.format("com.crealytics.spark.excel")
     .option(*test)
     .option("dataAddress","'Sheet'!")
     .load("/FileStore/tables/Test.xlsx")

TypeError: option () принимает ровно 3 аргумента (2 дано)

1 Ответ

0 голосов
/ 11 февраля 2019

Использовать options не option

options(**options)

Добавляет параметры ввода для базового источника данных.

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

...