簡體   English   中英

用一列任意長度的元組在Cassandra中創建表

[英]Create table in Cassandra with a column of tuples of arbitrary length

我正在嘗試創建一個適合以下數據的表:

[("US",20150914,(("GOV",7),("POL",9))),("PA",20150914,(("EDU",7),("POL",9),("MON",20))),("US",20150914,(("GOV",7)))]

我已經創建了下表:

CREATE TABLE gdelt.world_patterns (country varchar, date int, mention tuple <tuple<text, int>,tuple<text, int>,tuple<text, int>>, PRIMARY KEY ( country, date ) );

我的問題是,Cassandra只會正確存儲長度為三的元組。 我可以存儲任何長度的元組嗎? 我不確定該怎么寫。

這是我當前表的圖片: 在此處輸入圖片說明

CREATE TABLE gdelt.world_patterns (
    country varchar, 
    date int, 
    mention text, ---- Json
PRIMARY KEY ( country, date ) );

將元組值另存為Json字符串,這樣您就不必擔心元組的數量。

        {"tuple": {
      "country": "us",
      "date": "20150704",
      "mention": 
            [
          {"text": "value"},
          {"text": "value"},
          {"text": "value"},
           ]
    }}

可選地,您也可以將contry和date放在json中。

您在這里有多種選擇:(存儲為文本,可以,但是我認為您並不是真的想要它)

使用地圖(可能是最好的,但不知道是否要打擾解碼)

CREATE TABLE world_patterns (
    country varchar,
    date int,
    mention map<text, int>,
    PRIMARY KEY ( country, date )
);

INSERT INTO world_patterns(country, date, mention) values ('LA', 20150704, { 'US' : 20150914, 'GOV': 7, 'POL':  9}) ;

使用元組列表(只需對您的東西[]而不是()進行少許修改)

  CREATE TABLE world_patterns (
    country varchar,
    date int,
    mention mention list<frozen<tuple<text,int>>>,
    PRIMARY KEY (country, date)
  );

  INSERT INTO world_patterns(country, date, mention) values ('LA', 20150704, [('US', 20150914), ('GOV',7), ('POL',9)]) ;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM