EMR DynamoDB Hive 15分鐘入門

2021-06-14 00:42:36 字數 1950 閱讀 1101

amazon emr 相當於乙個已經安裝配置好的 hadoop 集群。所有在普通hadoop集群上能做的事情在 emr 上面基本都能做。

dynamodb 是乙個 k-v 的 no-sql 資料庫。它的特點主要是使用了 ssd 進行儲存,所以對於一般的請求一般在 10ms 就可以完成了,而且

請求的速度不會隨著資料量的增加而緩慢。

amazon 把 emr 和 dynamodb 進行了深度的整合。可以在 emr 上 呼叫 dynamodb 的資料進行 map reduce 的計算,然後可以把計算結果

儲存到 s3 或者 dhfs,通過這種方法也可以對 dynamodb 進行備份。

dynamodb 的缺點也很明顯。最大的兩個是不支援多個 index, 另乙個是**太貴,畢竟使用了 ssd.

那麼我們使用了這樣的乙個解決方案: 用 emr 來對 dynamodb 的資料進行 map reduce, 然後把結果儲存到 mysql 裡。

我們通過乙個例子來看這整個乙個過程。

首先我們假設我們有一張 dynamodb 的表。

emr 提供了乙個介面可以讓我們手動的去啟動乙個 job flow。

整個過程如下:

1. 載入 dynamodb 的資料到 hdfs,

2. 使用 hive 來進行 map reduce,

3. 把結果儲存到 s3 或者 hdfs,

4. 用 sqoop 把結果對映到 mysql.

1.

create external table orders_ddb_2012_01 ( order_id string, customer_id string, order_date bigint, total double )

stored by 'org.apache.hadoop.hive.dynamodb.dynamodbstoragehandler' tblproperties (

2.

select customer_id, sum(total) spend, count(*) order_count from orders_ddb_2012_01 

where order_date >= unix_timestamp('2012-01-01', 'yyyy-mm-dd')

and order_date < unix_timestamp('2012-01-08', 'yyyy-mm-dd')

group by customer_id

order by spend desc

limit 5 ;

3.

create external table orders_s3_new_export ( order_id string, customer_id string, order_date int, total double )

partitioned by (year string, month string)

row format delimited fields terminated by ','

location 's3://your bucket';

insert overwrite table orders_s3_new_export

partition (year='2012', month='01')

select * from orders_ddb_2012_01;

4.

./sqoop-1.4.1-incubating__hadoop-0.20/bin/sqoop export --connect jdbc:mysql:///--table --export-dir --fields-terminated-by , --input-null-non-string '\\n' --username --password

諸多細節在此沒有闡明,大家可以去仔細研讀下 amazon 的文件。

15分鐘了解Phoenix

以下部分翻譯自 phoenix為hbase穿上一層sql的外衣。所以你可以使用標準的jdbc api來建立表 插入資料 查詢hbase中的資料,而不是使用常規的hbase客戶端api。不會。跟原生的hbase客戶端相比,phoenix效能一樣好甚至更好,主要通過以下方式 除此之外,我們還做了一些工作...

15分鐘了解TiDB

2019年07月13日 22 21 49 d guco 閱讀數 77341 由於目前的專案把mysql換成了tidb,所以特意來了解下tidb。其實也不能說換,由於tidb和mysql幾乎完全相容,所以我們的程式沒有任何改動就完成了資料庫從mysql到tidb的轉換,tidb 是乙個分布式 news...

15分鐘引發的思考

這不是15 分鐘的會議,這是乙個由 15分鐘引發的思考。會場一開頭,便由我的乙個 8點推遲到8點 15的理由 嚴於律己 寬以待人,照顧特殊情況。盪起一片漣漪。在提高班裡有一種學習的形式叫做討論學習,在這裡是最平常也是最有效的一種進步方式。大家各抒己見,從中鍛鍊自己的思維,辯證的過程中糾正自己。在每一...