无法在 cassandra 中复制 csv 文件 table

Cannot copy csv file inside a cassandra table

我使用 COPY/TO 创建了一个标准的 csv 文件,现在我想在另一个 cassandra table 中使用 COPY/FROM 上传内容。但是,我收到以下错误:

Failed to import 5000 rows: Error - field larger than field limit (131072),  given up after 1 attempts
Exceeded maximum number of insert errors 1000
Failed to process 5000 rows; failed rows written to import_point_labeled_results.err
Exceeded maximum number of insert errors 1000
Processed: 0 rows; Rate:       0 rows/s; Avg. rate:       0 rows/s
0 rows imported from 0 files in 6.639 seconds (0 skipped).

csv 有大约 900k 个条目。是的,某些列的内容大于 131072,但这是不可避免的,无法更改。我该如何解决这个问题/绕过这个问题?我真的很想这样做而不必重新启动整个集群。

编辑:

我尝试遵循更改 ./cqlshrc 的建议并增加 field_size_limit 但是当我将其增加到 10000000000000000000 时出现此错误:

Traceback (most recent call last):
 File "/usr/bin/cqlsh.py", line 2421, in <module>
   main(*read_options(sys.argv[1:], os.environ))
 File "/usr/bin/cqlsh.py", line 2329, in main
   csv.field_size_limit(options.field_size_limit)
TypeError: limit must be an integer

即使我将值降低到最低限度,它仍然不足以上传我的 csv 中的所有内容,更高的值会抛出此错误。 还有其他选择吗?

编辑 2;

csv 文件不超过 10 列,但其中一列包含分析结果,并且可以包含大量数据。 csv 中的一行将是:

peinfo,sample,287da2f0-61f0-11e7-89ae-000c2936efb4,NotSend,,2017-07-06 02:09:35.745+0000,{'NotSend'},0x1f8b080000096e8800ffa4586f73d33e12fe2a19bfba9b819c6c59b6c5bb9216a603fd734d809bfbc17864699d086ccb232ba13d86ef7e2bbba569089ccde545eb3fcfb3fb6877bdd6fa5b60b5dce41b100a6cf062f62d901b905fba6d8d27599424619666f4d92cd8896a0b5d6ec557bcf117cf5292b267b3f0d92c618c26f8cf1f129e651e1de2ad248a38671e93fabb491c87bc27304ea2a8277f42bbdd46442c419b01c94070224998aa8c11051945d74009489a15124d33a0715a1694a88ca452b10292a4104a71c9532ee3e051652b6c07ca0bfd16ecc076da347812138a5e03a76b846c0700ea09747fc0be3f9beda3c9213479c41e408f1a660f684ec7c0d31ff04321bf95cde34968f2fdd3777f52b71bd16d7cd455c14320f88b4afc6554c80218e12a8b32c29350f4511dace7ba29cd7d507d9c3dfde3c75bc167175a5ad399d2cd16c6b6c60a87f0f9eca4aa6656af37ae9b59e8c0ee40cdbdbd2f70e7b96f612daa8569ef7a4c302ce4c1705338ef6e0eb7b047396f1cd8465497a28603029b47739a72320f334a667febec8ed0bc6bc3dcba7a4e18a151fc3c8ce3f4ef7be65ee90adedf87eea9b5a32bda632e4cdd8ae6ee888e1f4c1f1a987dd08d325fbbe1e4aa056fa959cf96779d837acfe0b5356a2bddff5ad8cf8ce3fa578beb7f9c5fcf2ec1bdd4a69b9d63286d7db808bffc53e8a4d5adfbd9c4f10c5c61b23466c0739b5eeca7a1a08c75dd501ce5b6916ea8c620cf3b705886def906acf5965455f95b75b793d6cdfd59eff8094d37da61aaebb1f87c0dae1628ccaebbd11cef049add58bc845bedc682ff255b8731c2358c654cb12ed4e76de7f252e9b1ea85337a24748290ced946b67723d135d4b5d9c158dbadd58d2b47a2f5001f1bc0af16533f12bc9ba624cfdb3c2f6ba3c6daef09d2d49328f858e5a26d7377d78e26c1ad84d6e51bd1a80a2c1d5df7934a539ac6595395ed48c20dac1795e9e00dec97d1c9e9fb93eb731afd9283adb441cad9edc914d63fb760efdefb0e3785f81adc626b2d340e7bae846ebfc3bc39bbb93c7bfb2be60a5b183625075389e8727845acf0457ed2f96eeb8fa6f09f4a3e577fc05d6d2c6e0c2750df354371a9b3bed4f0ea4f3df0f706fa045d83ed5f578d8485d93653f8cb0aa01d8d7e6ba4a8709762e434ca2b0be35371b1ad9c7e79e760653e68058b8d18bf9c07c2cafcb0323e14e0feef74bcea770d17583f620d27532a68a5e5973e79a34937ae7ad768894d70e9b0dfae57e6a4e9f470bc67a4717870dcc2a5eb3bc93830baf3699ceac3ab6ca5e8e040eb15d413cd9cdde2e643817a8b7b16f01bdb35d853bdd36ae4022edd29ecb48473b3185aae6f1263a91f847698dc250aaee0aaf80cd28d167e8edba6896b7d8cf2ca3c09dce8c4622372307e85f7d9fd035fc87cfdeefcf495355313eae3f2070eb17256c63fe42fb765b9ff8cbd5b9eddfcea61199a0252a7901a6736d51ef6c3f26af1e65760635518926c2c5c1be9aacec82fe0c6522e37d827fa89ae1412fce4e3833e14f5ebadde7febe87653b5a2d583a14f7b33e94ef8cf167ff94b2d3c0cb571c109843c85b2a409291989250d2510092025670c421a6711ef3f19f493b213751bf8af1f9b2dbe76f2fd6b4144087b4ee8f388ad087941e98b88fefb9018e22fc568113feb070a8aed7a98854efde152affb12599e2e3df1427c36f6fd930f0dd746fb38accc8df87a2a9cf070729b867df82f747388f77b01c4619d1dfac79bbdcf93b51fe2fce4df6d8b7e93f8c247281fb4e1659cc8f195120c831eaec3cd5b55044f6cf735fc2402b38708040f7eae71ae3b6664f018e1e152ff07aecafb55f94f4503d13f649e58101ed184c7711c4ac5e294ab42c5691a252c8e92388d8674a3f20efacab91f32c1b7bcd68fa4c93c8a319724cb520c0125dee73d36ef275474327770eb3e6efd778efdbffdc70d6d7127ad94f5dbb33eece1fe9d0ed5e3e58c2699b77b7f969218cf6ac53ca34c4ac58bb42c3957095194f222e44a315c4686733b1d2aff51304ef229635112f130612ce3d951c50a033656717c44711cb37dc92c8c1e15f3822682c5a22c64c2b3509669c9221a9510c95286941f2aa6731a71c6d3087f614623961e536c3b2bc72a2e8f28c6fae5c9a3e230c4fc3f6a0e0549b348489e1211ab52821045c430e7519626112bb04ebeff170000ffff010000ffff96302a6dce140000,1,NotSend,81dbe6ba82bb0311aa0b311bae06781302345cd6e07d5bdd3d7eae08a37bb8a0,{'NotSend'},{'NotSend'},,NotSend,['NotImplemented'],NotImplemented,NotImplemented

查看 cqlshrc.sample 文件(位置取决于您的安装,您可以在 github 中看到它,否则),您会发现可以增加此限制。

[csv]
;; The size limit for parsed fields
; field_size_limit = 131072

所以你应该编辑你的 .cqlshrc(通常在 ~/.cassandra/cqlshrc,你可能需要创建它)来配置这个限制。

我遇到了同样的错误。问题是(在我的情况下)我的硬盘上没有足够的 space。 错误信息有时并没有描述真正的问题。

我 运行 进入同样的错误但是 Docker。简短的回答是:

可以在官方 Cassandra Docker 容器的 /etc/cassandra 中找到名为 cqlshrc.sample 的文件。您将找到如下所示的代码块,您将对其进行编辑以匹配下面进一步显示的内容,将文件重命名为 cqlshrc 并将其移动到 /root/.cassandra/ 并重新启动 cqlsh shell .

[csv]
;; The size limit for parsed fields
; field_size_limit = 131072

如图所示将限制设置为更大的数字并取消注释该行。

[csv]
;; The size limit for parsed fields
field_size_limit = 1000000000

cqlshrc 文件的配置包括 cqlsh 工具的凭据。您可以找到更多信息 here.

Cassandra 的步骤 Docker 用户:

  1. 在主机中,打开一个文件夹并从中启动终端。
  2. 使用 docker ps 命令获取容器 ID。
  3. 将Docker容器中的文件复制到宿主机上,使用命令docker cp <CONTAINER ID>:/etc/cassandra/cqlshrc.sample .(不要忘记点)编辑如上所示的内容。请注意,您也可以在这里使用您的终端技能。
  4. 使用docker cp cqlshrc <CONTAINER ID>:/root/.cassandra/将编辑和重命名的文件复制到根目录中隐藏的cassandra目录。如果在容器中找不到目标目录,请通过使用 cd ~ 导航到根目录来创建一个目录,一旦到达那里,mkdir .cassandra.
  5. 摆脱您当前可能使用的 CQLSH shell 并打开一个新的,您应该已经准备就绪!