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_01where 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的理由 嚴於律己 寬以待人,照顧特殊情況。盪起一片漣漪。在提高班裡有一種學習的形式叫做討論學習,在這裡是最平常也是最有效的一種進步方式。大家各抒己見,從中鍛鍊自己的思維,辯證的過程中糾正自己。在每一...