100GbのS3データをミリ秒単位でクエリする

2019-12-16 amazon-web-services amazon-s3 amazon-redshift amazon-athena

s3にjsonデータがあります。データは次のようになります

{

    "act_timestamp": 1576480759864,
    "action": 26,
    "cmd_line": "\\??\\C:\\Windows\\system32\\conhost.exe 0xffffffff",
    "guid": "45af94911fb911ea827300270e098ff0",
    "md5": "d5669294f78a7d48c318ef22d5685ba7",
    "name": "conhost.exe",
    "path": "C:\\Windows\\System32\\conhost.exe",
    "pid": 1968,
    "sha2": "6bd1f5ab9250206ab3836529299055e272ecaa35a72cbd0230cb20ff1cc30902",
    "proc_id": "45af94901fb911ea827300270e098ff0",
    "proc_name": "gcxvdf.exe"
}

s3には、年/月/日/時のようなフォルダ構造で、約100GBのそのようなjsonが保存されています。 このデータをクエリして、 ミリ秒単位で結果を取得する必要があります 。 クエリは次のようになります:-

select proc_id where name='conhost.exe',
select proc_id where cmd_line contains 'conhost.exe'.

AWS AthenaとRedshiftを使用してみましたが、どちらも約10〜20秒で結果を出しています。 Paraquetやorcファイル形式も試しました。

この種のデータをクエリして結果をミリ秒単位で取得するために使用できるツール/テクノロジー/テクニックはありますか?

(応答時間がミリ秒である理由は、対話型アプリケーションを開発しているためです。)

Answers

SOLRやエラスティック検索などの分散検索システムを探していると思います(他にも確かにありますが、他にも知っているものがあります)。

データサイズをまったく削減できるかどうかも検討する価値があります。 100 GBの古い日付または古い日付はありますか?

私はpresto、hive on aws emrを使用して上記の使用例を解決できます。

ハイブの助けを借りて、s3のデータにテーブルを作成できます。また、プレストとハイブをカタログとして使用することで、このデータをクエリできます。 emrのPrestoは、aws athenaに比べて速すぎることがわかりました (アテナが内部でプレストを使用しているのは奇妙です)

 create table in hive:-
        CREATE EXTERNAL TABLE `test_table`( 
         `field_name1` datatype,
         `field_name2` datatype,
         `field_name3` datatype
        )
        STORED AS ORC
        LOCATION
          's3://test_data/data/';
        
 query this table in presto:-
        >presto-cli --catalog hive
        >select field_name1 from test_table limit 5;

Related