, поэтому я выполняю внутреннее соединение между фреймами данных, чтобы сохранить продажи только в определенные дни:
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()
Что не так с внутренним соединением?
Спасибо