如何使用cassandra-connector为Spark应用程序定义/设计自定义分区

时间:2019-05-02 11:44:05

标签: apache-spark apache-spark-sql datastax databricks

我正在使用spark-cassandra-connector.Need需要从oracle表中获取数据。 我有“ fiscal_year”和“ date_of_creation”列。 目前我已设置

.option("lowerBound", 2000);
.option("upperBound",2020);
.option("partitionColumn", "fiscal_year");

//这有效,但是它导致数据中的大量偏斜。结果火花工作了几个小时。

因此,希望将“ date_of_creation”列用作以下分区键

.option("lowerBound", "31-MAR-02");
.option("upperBound", "01-MAY-19");
.option("partitionColumn", "date_of_creation");  

但是它给出了一个错误,例如“ ORA-00932:数据类型不一致:预期的DATE得到了NUMBER”

这是怎么了? 是否有可能像这样设置多列

option("partitionColumn", ["date_of_creation" ,"fiscal_year"]); 

对于oracle表中的某些记录,如果“ fiscal_year”为null,在这种情况下如何编写自定义分区程序?

1 个答案:

答案 0 :(得分:1)

“上下限”必须是数字,并且必须是相应的分区列。就这么简单,而不是DATE Type或String等效项。当然,您可以使用等价的日期。

看到一个很好的帖子,而不是我:https://medium.com/@radek.strnad/tips-for-using-jdbc-in-apache-spark-sql-396ea7b2e3d3