Cassandra、Apache Spark、Mac上のFlume(Mac OS XYosemiteとOraclejdk1.7.0_55)のデモランドスケープをセットアップしています。ランドスケープは、の概念の証明として機能します。新しい分析プラットフォームであるため、cassandra db。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';
列の姓とその中のすべての列はすべて小文字で作成されます-いつかこれについても調査する必要がありますが、現時点ではそれほど重要ではありません。
次に、約1600エントリのCSVファイルを取得し、次のように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コマンドを試してみると(実際には2つのフィールドが欠落しているという事実があります):
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コマンドは、2つのフィールドが欠落しているという事実を好まないでしょう。欠落しているフィールドはもちろん(構造的な観点から)そこにありますが、空であるだけなので、これはまだ奇妙だと思います。
私はまだ別のショットを持っています: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.
私がここで間違っていることを誰かに教えてもらえますか? copy-commandのドキュメント によると、コマンドの設定方法は、少なくとも2つは機能するはずです。またはそう思うでしょう。
しかし、いや、私は明らかにここで重要な何かを見逃しています。
cqlshのCOPY
コマンドは扱いにくい場合があります。ただし、 COPY
ドキュメント には次の行があります。
CSV入力の列数は、Cassandraテーブルメタデータの列数と同じです。
そのことを念頭に置いて、空のフィールドに名前を付けることで、データをCOPY FROM
でインポートすることができました(それぞれprocessstarttimeuuid
と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)
Csvファイルをcassandraテーブルにロードしています
step1)このURLを使用してcassandraローダー
Sudo wget https://github.com/brianmhess/cassandra-loader/releases/download/v0.0.23/cassandra-loader
step2)Sudo chmod + x cassandra-loader
a)csvファイル名は「pt_bms_tkt_success_record_details_new_2016_12_082017-01-0312-30-01.csv」です。
b)キースペース名は「bms_test」です
c)テーブル名は「pt_bms_tkt_success_record_details_new」です
d)列は「trx_id ...... trx_day」です
step3)csvファイルの場所とcassandra-loaderは「cassandra3.7/bin /」です
step $)[stp @ ril-srv-sp3 bin] $ ./cassandra-loader -f pt_bms_tkt_success_record_details_new_2016_12_082017-01-0312-30-01.csv -Host 192.168.1.29 -schema "bms_test.pt_bms_tkt_success_record_details_new(trx_ trx_record_type、trx_date、trx_show_date、cinema_str_id、SESSION_ID、ttype_code、ITEM_ID、item_var_sequence、trx_booking_id、venue_name、screen_by_tnum、price_group_code、area_cat_str_code、area_by_tnum、venue_capacity、amount_currentprice、venue_class、trx_booking_status_committed、booking_status、amount_paymentstatus、event_application、venue_cinema_companyname、venue_cinema_name、venue_cinema_type、venue_cinema_application、 region_str_code、venue_city_name、sub_region_str_code、sub_region_str_name、event_code、event_type、event_name、event_language、event_genre、event_censor_rating、event_release_date、event_producer_code、event_item_name、event_itemvariable_name、event_quantity、amount_amount、amount_amount、amount_amount、amount_amount、amount_amount Offer_name、offer_amount、payment_lastmode、payment_lastamount、payment_reference1、payment_reference2、payment_bank、customer_loginid、customer_loginstring、offer_referral、customer_mailid、customer_mobile、trans_str_sales_status_at_venue、trans_mny_sales_status_at_venue、trans_mny_trans_value_at_venue、payment_ism transaction_after_offer、is_premium_transaction、city_type、holiday_season、week_type、event_popularity、transactionrange_after_discount、showminusbooking、input_source_name、channel、time_stamp、life_cyclestate_to、record_status、week_name、number_of_active_customers、event_genre1、event_gen reserved1、reserve2、reserve3、reserve4、reserve5、payment_mode、payment_type、date_of_first_transaction、transaction_time_in_hours、showtime_in_hours、trx_day) ";