【问题标题】:CQL copy to Cassandra table does not workCQL 复制到 Cassandra 表不起作用
【发布时间】:2017-08-12 12:00:26
【问题描述】:

我有一个 tsv 文件,记录如下:

"county_id" "county_desc"   "voter_reg_num" "status_cd" "voter_status_desc" "reason_cd" "voter_status_reason_desc"  "absent_ind"    "name_prefx_cd" "last_name" "first_name"    "middle_name"   "name_suffix_lbl"   "res_street_address"    "res_city_desc" "state_cd"  "zip_code"  "mail_addr1"    "mail_addr2"    "mail_addr3"    "mail_addr4"    "mail_city" "mail_state"    "mail_zipcode"  "full_phone_number" "race_code" "ethnic_code"   "party_cd"  "gender_code"   "birth_age" "birth_state"   "drivers_lic"   "registr_dt"    "precinct_abbrv"    "precinct_desc" "municipality_abbrv"    "municipality_desc" "ward_abbrv"    "ward_desc" "cong_dist_abbrv"   "super_court_abbrv" "judic_dist_abbrv"  "nc_senate_abbrv"   "nc_house_abbrv"    "county_commiss_abbrv"  "county_commiss_desc"   "township_abbrv"    "township_desc" "school_dist_abbrv" "school_dist_desc"  "fire_dist_abbrv"   "fire_dist_desc"    "water_dist_abbrv"  "water_dist_desc"   "sewer_dist_abbrv"  "sewer_dist_desc"   "sanit_dist_abbrv"  "sanit_dist_desc"   "rescue_dist_abbrv" "rescue_dist_desc"  "munic_dist_abbrv"  "munic_dist_desc"   "dist_1_abbrv"  "dist_1_desc"   "dist_2_abbrv"  "dist_2_desc"   "confidential_ind"  "age"   "ncid"  "vtd_abbrv" "vtd_desc"
"1" "ALAMANCE"  "000009005990"  "A" "ACTIVE"    "AV"    "VERIFIED"  " " " " "AABEL" "EVELYN"    "LARSEN"    ""  "4430 E GREENSBORO-CHAPEL HILL RD   "   "GRAHAM"    "NC"    "27253" "4430 E GREENSBORO-CHAPEL HILL RD"  ""  ""  ""  "GRAHAM"    "NC"    "27253" "0000000"   "W" "NL"    "UNA"   "F" "80"    "NY"    "N" "10/01/1984"    "08N"   "NORTH NEWLIN"  ""  ""  ""  ""  "06"    "15A"   "15A"   "24"    "064"   ""  ""  ""  ""  ""  ""  ""  ""  ""  ""  ""  ""  ""  ""  ""  ""  ""  ""  "15A"   "15A PROSECUTORIAL" " " " " "N" "Age Over 66"   "AA56273"   "08N"   "08N"
"1" "ALAMANCE"  "000009048723"  "A" "ACTIVE"    "AV"    "VERIFIED"  " " " " "AARON" "CHRISTINA" "CASTAGNA"  ""  "421  WHITT AVE   " "BURLINGTON"    "NC"    "27215" "421 WHITT AVE" ""  ""  ""  "BURLINGTON"    "NC"    "27215" "3362291110"    "W" "UN"    "UNA"   "F" "40"    "NC"    "Y" "03/26/1996"    "03S"   "SOUTH BOONE"   "BUR"   "BURLINGTON"    ""  ""  "06"    "15A"   "15A"   "24"    "064"   ""  ""  ""  ""  ""  ""  ""  ""  ""  ""  ""  ""  ""  ""  ""  ""  "BUR"   "BURLINGTON"    "15A"   "15A PROSECUTORIAL" " " " " "N" "Age 26 - 40"   "AA98377"   "03S"   "03S"
"1" "ALAMANCE"  "000009019674"  "A" "ACTIVE"    "AV"    "VERIFIED"  " " " " "AARON" "CLAUDIA"   "HAYDEN"    ""  "1013  EDITH ST   " "BURLINGTON"    "NC"    "27215" "1013 EDITH ST" ""  ""  ""  "BURLINGTON"    "NC"    "27215" "2228834"   "W" "NL"    "UNA"   "F" "71"    "VA"    "Y" "08/15/1989"    "124"   "BURLINGTON 4"  "BUR"   "BURLINGTON"    ""  ""  "06"    "15A"   "15A"   "24"    "063"   ""  ""  ""  ""  ""  ""  ""  ""  ""  ""  ""  ""  ""  ""  ""  ""  "BUR"   "BURLINGTON"    "15A"   "15A PROSECUTORIAL" " " " " "N" "Age Over 66"   "AA69747"   "124"   "124"
"1" "ALAMANCE"  "000009129589"  "A" "ACTIVE"    "AV"    "VERIFIED"  " " " " "AARON" "JAMES" "MICHAEL"   ""  "5608  OLD CHEROKEE LN   "  "GRAHAM"    "NC"    "27253" "PO BOX 98" ""  ""  ""  "SAXAPAHAW" "NC"    "27340" "2027443411"    "W" "UN"    "DEM"   "M" "68"    "MA"    "N" "03/07/2012"    "08N"   "NORTH NEWLIN"  ""  ""  ""  ""  "06"    "15A"   "15A"   "24"    "064"   ""  ""  ""  ""  ""  ""  ""  ""  ""  ""  ""  ""  ""  ""  ""  ""  ""  ""  "15A"   "15A PROSECUTORIAL" " " " " "N" "Age Over 66"   "AA170513"  "08N"   "08N"

还有这个架构:

create keyspace test with replication  = {'class': 'SimpleStrategy','replication_factor' : 1 };
create table voters(
county_id           varchar,    
county_desc         varchar ,
voter_reg_num       varchar ,
status_cd           varchar ,
voter_status_desc   varchar ,
reason_cd           varchar ,
voter_status_reason_desc    varchar ,
absent_ind          varchar ,
name_prefx_cd       varchar ,
last_name           varchar ,
first_name          varchar ,
midl_name           varchar ,
name_sufx_cd        varchar,
res_street_address  varchar ,
res_city_desc       varchar ,
state_cd            varchar,
zip_code            varchar,
mail_addr1          varchar ,
mail_addr2          varchar ,
mail_addr3          varchar ,
mail_addr4          varchar ,
mail_city           varchar ,
mail_state          varchar,
mail_zipcode        varchar,
full_phone_number   varchar,
race_code           varchar,
ethnic_code         varchar,
party_cd            varchar,
gender_code         varchar,
birth_age           varchar     ,  
birth_place         varchar,
drivers_lic         varchar ,       
registr_dt          varchar,
precinct_abbrv      varchar,
precinct_desc       varchar,
municipality_abbrv  varchar,
municipality_desc   varchar ,
ward_abbrv          varchar,
ward_desc           varchar ,
cong_dist_abbrv     varchar,
super_court_abbrv   varchar,
judic_dist_abbrv    varchar,
nc_senate_abbrv     varchar,
nc_house_abbrv      varchar,
county_commiss_abbrv varchar,
county_commiss_desc     varchar,    
township_abbrv       varchar,
township_desc        varchar,   
school_dist_abbrv    varchar,   
school_dist_desc     varchar,   
fire_dist_abbrv      varchar,   
fire_dist_desc       varchar,   
water_dist_abbrv     varchar,   
water_dist_desc      varchar,   
sewer_dist_abbrv     varchar,   
sewer_dist_desc      varchar,   
sanit_dist_abbrv     varchar,   
sanit_dist_desc      varchar,   
rescue_dist_abbrv    varchar,   
rescue_dist_desc     varchar,   
munic_dist_abbrv     varchar,
munic_dist_desc      varchar,   
dist_1_abbrv         varchar,   
dist_1_desc          varchar,   
dist_2_abbrv         varchar,
dist_2_desc          varchar,   
Confidential_ind     varchar,   
age                 varchar      ,   
ncid                    varchar,     
vtd_abbrv           varchar     ,
vtd_desc            varchar     ,
primary key(voter_reg_num)
);

当我尝试复制到 cassandra 表时,使用:

COPY voters FROM 'sample.tsv' WITH DELIMITER='\t';

我明白了:

Processed: 1000 rows; Rate:    1230 rows/s; Avg. rate:    1945 rows/s
1000 rows imported from 1 files in 0.514 seconds (0 skipped).

但是,当我进行计数时,我意识到只有一条记录被复制到表中。

我做错了什么?提前致谢。

【问题讨论】:

  • 你的架构是什么?
  • @AshrafulIslam 我用架构更新了问题

标签: cassandra cql


【解决方案1】:

使用复制命令添加列名

COPY voters(county_id,county_desc,voter_reg_num,status_cd,voter_status_desc,reason_cd,voter_status_reason_desc,absent_ind,name_prefx_cd,last_name,first_name,middle_name,name_suffix_lbl,res_street_address,res_city_desc,state_cd,zip_code,mail_addr1,mail_addr2,mail_addr3,mail_addr4,mail_city,mail_state,mail_zipcode,full_phone_number,race_code,ethnic_code,party_cd,gender_code,birth_age,birth_state,drivers_lic,registr_dt,precinct_abbrv,precinct_desc,municipality_abbrv,municipality_desc,ward_abbrv,ward_desc,cong_dist_abbrv,super_court_abbrv,judic_dist_abbrv,nc_senate_abbrv,nc_house_abbrv,county_commiss_abbrv,county_commiss_desc,township_abbrv,township_desc,school_dist_abbrv,school_dist_desc,fire_dist_abbrv,fire_dist_desc,water_dist_abbrv,water_dist_desc,sewer_dist_abbrv,sewer_dist_desc,sanit_dist_abbrv,sanit_dist_desc,rescue_dist_abbrv,rescue_dist_desc,munic_dist_abbrv,munic_dist_desc,dist_1_abbrv,dist_1_desc,dist_2_abbrv,dist_2_desc,confidential_ind,age,ncid,vtd_abbrv,vtd_desc) FROM 'sample.tsv' WITH DELIMITER='\t' AND HEADER = true;

【讨论】:

  • 它对我不起作用,我仍然有以下错误Failed to import x rows: ParseError - Invalid row length y should be z, given up without retries。但是我使用了你给的命令行
  • @Marine1 相同数据?
【解决方案2】:

如果您的 tsv 文件在顶部有列名,那么不要忘记将 WITH HEADER = TRUE 添加到您的 COPY 命令中。我还将删除双引号并验证字段是否由制表符而不是空格分隔。要进行测试,只需从原始文件中创建一个包含 50 行左右的新 tsv 文件并在那里进行更改。告诉我进展如何。

【讨论】:

  • 我忘了写 header=true 条件。我创建了一个 50 行的文件,并像你说的那样删除了双引号,但现在我遇到了另一个问题。一些为空的字段消失了,然后我得到了这个: 无法导入 1 行:ParseError - 无效的行长度 70 应该是 71,放弃而不重试 导入 4 行失败: ParseError - 无效的行长度 69 应该是 71,放弃没有重试处理 5 行失败;写入 import_test_voters.err 的失败行
  • 如果更改为 |或逗号分隔并删除引号错误是否仍然存在?我不确定您对 TSV 文件的生成方式有多少控制权,因此这可能不是一种实用的方法。看起来标题和表格中的列是按顺序排列的。仅导入单行的一种情况是主键全都相同,但这里似乎并非如此。
猜你喜欢
  • 2021-06-23
  • 2013-03-04
  • 1970-01-01
  • 2013-02-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-11-10
  • 2012-10-24
相关资源
最近更新 更多