我在 AWS 中國 (北京) 區域 (cn-north-1) 推出了 Amazon EMR 叢集。我使用 Presto 和 Apache Hive 從 Amazon Simple Storage Service (Amazon S3) 儲存貯體建立外部表。當我使用 Hive 和 Presto 查詢表時,收到如下錯誤:presto:default> select * from mydata; Query 20200912_072348_00009_qqx96, FAILED, 1 node Splits: 1 total, 0 done (0.00%) 0:03 [0 rows, 0B] [0 rows/s, 0B/s] 查詢 20200912_072348_00009_qqx96 失敗: 提供的權杖格式錯誤或無效。(服務: Amazon S3;狀態碼: 400;錯誤代碼: InvalidToken;請求 ID: 811359ED1D9F8250)
簡短描述
在早期的 Amazon EMR 發行版中,Presto 不會自動使用 S3 儲存貯體所在的區域。使用下列其中一個選項來解決此錯誤:
- 升級至 Amazon EMR 發行版 5.12.0 或更新版本。
- 若要使用 Amazon EMR 發行版 5.11.x 或更早版本,將 hive.s3.pin-client-to-current-region 屬性設定為 true。
解決方法
升級至 Amazon EMR 發行版 5.12.0 或更新版本
啟動新叢集並選擇 Amazon EMR 發行版 5.12.0 或更新版本。如需詳細資訊,請參閱關於 Amazon EMR 發行版。
將 hive.s3.pin-client-to-current-region 屬性設定為 true (版本 5.11.x 或更早版本)
1. 在每個節點上,開啟 hive.properties 檔案,然後將 hive.s3.pin-client-to-current-region 設定為 true。範例:
sudo vim /etc/presto/conf/catalog/hive.properties
hive.s3.connect-timeout=2m
hive.s3.max-backoff-time=10m
...
hive.s3.pin-client-to-current-region=true
2. 在每個節點上重新啟動 Presto:
sudo restart presto-server
3. 若要確認新組態如預期運作,請在中國 (北京) 區域使用 Hive 和 Presto 查詢資料表。
相關資訊
Apache Hive
Presto 和 Trino