Внутренние объединения Spark приводят к пустым записям - PullRequest
0 голосов
/ 17 мая 2018

, поэтому я выполняю внутреннее соединение между фреймами данных, чтобы сохранить продажи только в определенные дни:

val days_df = ss.createDataFrame(days_array.map(Tuple1(_))).toDF("DAY_ID")
val filtered_sales = sales.join(days_df,Seq("DAY_ID")
filtered_sales.show()

Это приводит к пустому фрейму данных Filter_sales (0 записей), оба столбца DAY_ID имеют одинаковый тип (строку).

root
|-- DAY_ID: string (nullable = true)

root
|-- SKU: string (nullable = true)
|-- DAY_ID: string (nullable = true)
|-- STORE_ID: string (nullable = true)
|-- SALES_UNIT: integer (nullable = true)
|-- SALES_REVENUE: decimal(20,5) (nullable = true)

Sales df заполняется из файла объемом 20 ГБ. Когда вместо этого я использую небольшой файл размером в несколько килобайт, объединение работает нормально, и я вижу результаты, пустой массив данных появляется с большим набором данных. N.B., когда я использую этот код, он работает нормально, даже для файла продаж 20 ГБ:

sales.filter(sales("DAY_ID").isin(days_array:_*))
.show()

Что не так с внутренним соединением? Спасибо

1 Ответ

0 голосов
/ 18 мая 2018

Попробуйте передать days_array , а затем применить внутреннее соединение. Так как days_array слишком мал по сравнению с другой таблицей, вещание поможет.

...