从 csv 文件复制 cassandra 表

2024-03-29

我正在我的 Mac(带有 Oracle jdk1.7.0_55 的 Mac OS X Yosemite)上为 Cassandra、Apache Spark 和 Flume 设置演示环境。该景观应作为新分析平台的概念证明,因此我需要在我的 cassandra 数据库中提供一些测试数据。我正在使用卡桑德拉2.0.8。

我在 Excel 中创建了一些演示数据并将其导出为 CSV 文件。结构是这样的:

ProcessUUID;ProcessID;ProcessNumber;ProcessName;ProcessStartTime;ProcessStartTimeUUID;ProcessEndTime;ProcessEndTimeUUID;ProcessStatus;Orderer;VorgangsNummer;VehicleID;FIN;Reference;ReferenceType
0F0D1498-D149-4FCC-87C9-F12783FDF769;AbmeldungKl‰rfall;1;Abmeldung Kl‰rfall;2011-02-03 04:05+0000;;2011-02-17 04:05+0000;;Finished;SIXT;4278;A-XA 1;WAU2345CX67890876;KLA-BR4278;internal

然后,我使用以下命令在 cqlsh 中创建了一个键空间和一个列族:

CREATE KEYSPACE dadcargate 
WITH REPLICATAION  = { 'class' : 'SimpleStrategy', 'replication_factor' : '1' };

use dadcargate;

CREATE COLUMNFAMILY Process (
  ProcessUUID uuid, ProcessID varchar, ProcessNumber bigint, ProcessName varchar, 
  ProcessStartTime timestamp, ProcessStartTimeUUID timeuuid, ProcessEndTime timestamp, 
  ProcessEndTimeUUID timeuuid, ProcessStatus varchar, Orderer varchar,
  VorgangsNummer varchar, VehicleID varchar, FIN varchar, Reference varchar,
  ReferenceType varchar, 
PRIMARY KEY (ProcessUUID))
WITH COMMENT='A process is like a bracket around multiple process steps';

列族名称和其中的所有列都是用全小写创建的 - 有一天也必须对此进行调查,但目前并不那么相关。

现在,我获取 CSV 文件,其中包含大约 1600 个条目,并希望将其导入到名为process像这样:

cqlsh:dadcargate> COPY process (processuuid, processid, processnumber, processname, 
processstarttime, processendtime, processstatus, orderer, vorgangsnummer, vehicleid,
fin, reference, referencetype) 
FROM 'Process_BulkData.csv' WITH DELIMITER = ';' AND HEADER = TRUE;

它给出以下错误:

Record #0 (line 1) has the wrong number of fields (15 instead of 13).
0 rows imported in 0.050 seconds.

这基本上是正确的,因为我的 cvs-export 中没有 timeUUID 字段。

如果我在没有像这样的显式列名的情况下尝试 COPY 命令(事实上,我实际上确实错过了两个字段):

cqlsh:dadcargate> COPY process from 'Process_BulkData.csv' 
WITH DELIMITER = ';' AND HEADER = TRUE;

我最终遇到了另一个错误:

Bad Request: Input length = 1
Aborting import at record #0 (line 1). Previously-inserted values still present.
0 rows imported in 0.009 seconds.

嗯。有点奇怪,但还好。也许 COPY 命令不喜欢缺少两个字段的事实。我仍然认为这很奇怪,因为缺失的字段当然存在(从结构的角度来看),但只是空的。

我还有另一个镜头:我删除了 excel 中丢失的列,再次将文件导出为 cvs 并尝试在我的 csv 中导入没有标题行但明确的列名称,如下所示:

cqlsh:dadcargate> COPY process (processuuid, processid, processnumber, processname, 
processstarttime, processendtime, processstatus, orderer, vorgangsnummer, vehicleid, 
fin, reference, referencetype) 
FROM 'Process_BulkData-2.csv' WITH DELIMITER = ';' AND HEADER = TRUE;

我收到此错误:

Bad Request: Input length = 1
Aborting import at record #0 (line 1). Previously-inserted values still present.
0 rows imported in 0.034 seconds.

谁能告诉我我在这里做错了什么?根据复制命令的文档 http://www.datastax.com/documentation/cql/3.0/cql/cql_reference/copy_r.html,我设置命令的方式,应该至少适用于其中两个。或者说我是这么认为的。

但是不,我显然在这里遗漏了一些重要的东西。


cqlsh's COPY命令可能很敏感。然而,在COPY文档 http://www.datastax.com/documentation/cql/3.1/cql/cql_reference/copy_r.html是这一行:

CSV 输入中的列数与 Cassandra 表元数据中的列数相同。

记住这一点,我确实设法让您的数据通过COPY FROM,通过命名空字段(processstarttimeuuid and processendtimeuuid, 分别):

aploetz@cqlsh:stackoverflow> COPY process (processuuid, processid, processnumber, 
processname, processstarttime, processstarttimeuuid, processendtime, 
processendtimeuuid, processstatus, orderer, vorgangsnummer, vehicleid, fin, reference, 
referencetype) FROM 'Process_BulkData.csv' WITH DELIMITER = ';' AND HEADER = TRUE;

1 rows imported in 0.018 seconds.
aploetz@cqlsh:stackoverflow> SELECT * FROM process ;

 processuuid                          | fin               | orderer | processendtime            | processendtimeuuid | processid         | processname        | processnumber | processstarttime          | processstarttimeuuid | processstatus | reference  | referencetype | vehicleid | vorgangsnummer
--------------------------------------+-------------------+---------+---------------------------+--------------------+-------------------+--------------------+---------------+---------------------------+----------------------+---------------+------------+---------------+-----------+----------------
 0f0d1498-d149-4fcc-87c9-f12783fdf769 | WAU2345CX67890876 |    SIXT | 2011-02-16 22:05:00+-0600 |               null | AbmeldungKl‰rfall | Abmeldung Kl‰rfall |             1 | 2011-02-02 22:05:00+-0600 |                 null |      Finished | KLA-BR4278 |      internal |    A-XA 1 |           4278

(1 rows)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

从 csv 文件复制 cassandra 表 的相关文章

  • 在Java中读取制表符分隔的文件

    我有以下代码来读取 Java 中的制表符分隔文件 while str in readLine null if str trim length 0 continue String values str split t System out p
  • Cassandra 与 ZooKeeper 的事务 - 这有效吗?

    我正在尝试在 ZooKeeper 的帮助下为 Cassandra 实现一个事务系统 由于我认为我在数据库实现方面没有足够的经验 所以我想知道我的想法原则上是否可行 或者是否有任何重大缺陷 以下是步骤的高级描述 识别所有要编辑的行 键 和列
  • 我应该使用 AWK 或 SED 删除 CSV 文件中引号之间的逗号吗? (重击)

    我有一堆日常打印机登录CSV格式 我正在编写一个脚本来跟踪使用了多少纸张并将信息保存到数据库中 但我遇到了一个小问题 本质上 日志中的一些文档名称中包含逗号 全部用双引号引起来 并且由于它采用逗号分隔格式 所以我的代码搞乱了并将所有内容推到
  • Cassandra 会话与集群 有什么可分享的?

    考虑 Cassandra 的 Session 和 Cluster 类 Java 驱动程序 我想知道有什么区别 在 Hibernate 中 每次都会创建一个会话并共享会话工厂 从许多来源我了解到 它被认为是创建一个会话并在多个线程之间共享它
  • 如何在 Java 中复制对象?

    考虑下面的代码 DummyBean dum new DummyBean dum setDummy foo System out println dum getDummy prints foo DummyBean dumtwo dum Sys
  • 根据统计数据获取cassandra中的数据点

    我正在测试 Cassandra 2 0 作为存储时间序列数据的可能替代品 我制作了一个简单的表并将一些数据转储到其中 CREATE TABLE DataRaw channelId int sampleTime timestamp value
  • 读取 CSV 并绘制彩色折线图

    我正在尝试在阈值之前和之后绘制带有彩色标记的图表 如果我使用 for 循环for随着时间的推移读取解析输入文件H M我只能绘制和着色两个点 但对于所有的点我无法绘制 Input akdj 12 00 34515 sdfg sgqv 13 0
  • 聚类键的范围查询

    我有一个表 用于记录在我的网站上执行的用户活动 我的表结构如下 CREATE TABLE key space log id uuid time bigint ip text url text user id int PRIMARY KEY
  • str_getcsv 未正确解析数据

    我对 PHP 的 str getcsv 函数有疑问 我有这个代码
  • 我可以使 Ant 复制任务特定于操作系统吗?

    我有一个 Ant 脚本 它使用 复制 任务 http ant apache org manual Tasks copy html 它是为 Windows 编写的 并有一个硬编码的 C 路径作为 todir 参数 我看到 exec 任务有一个
  • BigQuery:从 CSV 加载,跳过列

    假设我有一个包含现有数据的表 其架构如下 name Field1 type STRING name Field2 type STRING 我们的数据是 CSV Field1 Field2 Value1 Value2 我们通过创建新作业来加载
  • 处理CSV数据时如何忽略第一行数据?

    我要求 Python 打印 CSV 数据列中的最小数字 但顶行是列号 并且我不希望 Python 考虑顶行 如何确保 Python 忽略第一行 这是到目前为止的代码 import csv with open all16 csv rb as
  • Spark 2.1无法在CSV上写入Vector字段

    当我将代码从 Spark 2 0 迁移到 2 1 时 我偶然发现了与 Dataframe 保存相关的问题 这是代码 import org apache spark sql types import org apache spark ml l
  • fputcsv 和记事本

    我使用 fputcsv 生成 csv 文件 它工作得很好 但是当我在记事本 Windows 中查看 csv 文件时 没有新行 所有行都在 1 行中 并且在应该换行的地方有一个正方形 损坏的字符 例如 Mac 上的其他编辑器可以正确显示带有中
  • Cassandra:在 session.execute() 期间“无法完成对任何主机的操作”

    卡桑德拉版本 1 2 2Thrift API 版本 19 35 0CQL支持的版本 2 0 0 3 0 1 默认 3 0 1 适用于 python 3 4 的 cassandra 驱动程序使用 sudo 运行 cassandra bin c
  • 如何在不超时的情况下解析大型 CSV 文件?

    我正在尝试解析 50 MB 的 csv 文件 文件本身很好 但我正在尝试解决所涉及的大量超时问题 每个设置上传明智 我可以轻松上传并重新打开文件 但浏览器超时后 我收到 500 内部错误 我的猜测是我可以将文件保存到服务器上 打开它并保留我
  • Apache Cassandra 中的复合索引

    我正在尝试设置一个 cassandra 列族 其中一些列上有二级索引 在读回数据时我需要进行过滤 在我最初的测试中 当我一起使用多个索引时 速度会变慢 这是我当前的配置方式 通过 cassandra cli update column fa
  • Cassandra 服务器抛出 java.lang.AssertionError: DecoratedKey(...) != DecoratedKey

    我目前正在尝试 Cassandra 在客户端 使用 Hector 我查找了一些像这样的键 ColumnFamilyResult
  • 以编程方式在java的resources/source文件夹中创建文件?

    我有两个资源文件夹 src 这是我的 java 文件 资源 这是我的资源文件 图像 properties 组织在文件夹 包 中 有没有办法以编程方式在该资源文件夹中添加另一个 properties 文件 我尝试过这样的事情 public s
  • 使用 C# 中的 CsvHelper 将不同文化的 csv 解析为十进制

    C 中 CsvHelper 解析小数的问题 我创建了一个从 byte 而不是文件获取 csv 文件的类 并且它工作正常 public static List

随机推荐