【问题标题】:How to define/design a custom partitions for spark app which using cassandra-connector如何为使用 cassandra-connector 的 Spark 应用程序定义/设计自定义分区
【发布时间】:2019-09-20 22:23:41
【问题描述】:

我正在使用 spark-cassandra-connector。需要从 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,这种情况下如何编写自定义分区器?

【问题讨论】:

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


    【解决方案1】:

    Upper 和Lower Bound 必须是数字和对应的分区列。就这么简单,不是 DATE 类型或字符串等价物。当然,您可以有日期的数字等价物。

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

    【讨论】:

    • 谢谢,一个简单的问题......在这个示例中 .option("numPartitions", 10) .option("partitionColumn", "owner_id") 是否意味着每个 owner_id 记录分为 10分区?
    • Spark 将生成对 db 的查询。 N 个范围
    • 现在它似乎支持 Date ,issues.apache.org/jira/browse/SPARK-22814 但是当我尝试它时给出 java.lang.IllegalArgumentException: Timestamp format must be yyyy-mm-dd hh:mm:ss[.ffffffffff] As Date 被视为 Timestamp ,不确定如何指定传递的是 Date 而不是 TimeStamp
    • 2.4 你的意思是?嗯。虽然会有意义
    猜你喜欢
    • 1970-01-01
    • 2023-04-03
    • 1970-01-01
    • 2017-01-09
    • 1970-01-01
    • 2016-09-02
    • 2019-10-28
    • 2018-05-10
    • 1970-01-01
    相关资源
    最近更新 更多