【问题标题】:How to load dynamic data into cassandra table? How to read csv file wih header also?如何将动态数据加载到 cassandra 表中?如何读取带有标题的csv文件?
【发布时间】:2019-02-21 17:43:22
【问题描述】:

我想将 csv 文件(其变化的列)加载到 cassandra 表中? 文件有时有 10 列,有时有 8 列,根据这个我如何将数据插入到 cassandra 表中?

有没有办法使用 scala 或批处理命令进行加载?

如何读取带有标题的 csv 文件?

【问题讨论】:

    标签: scala cassandra cql scala-collections scalatest


    【解决方案1】:

    这里真的有很多选择。您可以使用Datastax drivers 之一编写自己的解决方案,也可以使用cqlsh COPY 命令或Datastax Bulk loader tool

    您的源文件更改格式的事实在这里向您抛出了一些曲线球,假设您对必须加载的文件没有任何控制权,那么在每个基础中您需要创建一些最初解析的东西文件或将其转换为具有相同列数的通用格式。

    例如,如果您使用的是 shell,您可以使用 awk 之类的东西来计算列数,然后以此为基础采取行动。以bash 计算列数的简单示例:

    $ cat csv.ex1
    apples,bananas,grapes,pineapples
    
    $ cat csv.ex2
    oranges,mangos,melons,pears,rasberries,strawberries,blueberries
    
    $ cat csv.ex1 | awk -F "," '{print "num of cols: "NF}'
    num of cols: 4
    
    $cat csv.ex2 | awk -F "," '{print "num of cols: "NF}'
    num of cols: 7
    

    一旦你有了这个,你就应该能够相应地解析或转换你的文件,并像处理任何其他 csv 文件一样加载到 Cassandra。

    【讨论】:

    • 感谢您的回复。但是如何在没有模式的情况下在 cassandra 中加载。这就像动态。我们可以使用地图吗?
    • 在将任何内容加载到表中之前,您必须在 Cassandra 中有一个模式。您可以使用集合类型来存储信息,但您需要小心如何更新这些信息,因为覆盖集合条目可能会导致过多的墓碑。请参阅此处有关 C3.0 数据类型的文档:docs.datastax.com/en/cql/3.3/cql/cql_reference/…
    猜你喜欢
    • 2014-02-02
    • 2017-01-05
    • 2020-08-30
    • 1970-01-01
    • 1970-01-01
    • 2021-01-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多