Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Menggunakan S3 Select dengan Hive untuk meningkatkan performa
penting
Amazon S3 Select tidak lagi tersedia untuk pelanggan baru. Pelanggan Amazon S3 Select yang sudah ada dapat terus menggunakan fitur seperti biasa. Pelajari selengkapnya
Dengan rilis Amazon EMR versi 5.18.0 dan yang lebih baru, Anda dapat menggunakan S3 Select
S3 Select didukung dengan tabel Hive berdasarkan file CSV dan JSON dan dengan menetapkan s3select.filter
variabel konfigurasi ke true
selama sesi Hive Anda. Untuk informasi selengkapnya dan contoh tambahan, lihat Menentukan S3 Select dalam kode Anda.
Apakah S3 Select tepat untuk aplikasi saya?
Kami menyarankan Anda membuat tolok ukur aplikasi dengan dan tanpa S3 Select untuk melihat apakah cocok dengan aplikasi Anda.
Gunakan pedoman berikut untuk menentukan apakah aplikasi Anda adalah kandidat untuk menggunakan S3 Select:
-
Permintaan Anda menyaring lebih dari setengah set data asli.
-
Predikat filter kueri permintaan Anda menggunakan kolom yang memiliki tipe data yang didukung oleh Amazon S3 Select. Untuk informasi selengkapnya, lihat Jenis data di Panduan Pengguna Layanan Penyimpanan Sederhana Amazon.
-
Koneksi jaringan Anda antara Amazon S3 dan klaster Amazon EMR memiliki kecepatan transfer yang baik dan bandwidth yang tersedia. Amazon S3 tidak memampatkan tanggapan HTTP, sehingga ukuran respon kemungkinan akan meningkatkan file input terkompresi.
Pertimbangan dan batasan
-
Enkripsi sisi server Amazon S3 dengan kunci enkripsi yang disediakan pelanggan (SSE-C) dan enkripsi di sisi klien tidak didukung.
-
Properti
AllowQuotedRecordDelimiters
tidak didukung. Jika properti ini ditentukan, kueri akan gagal. -
Hanya file CSV dan JSON dalam format UTF-8 yang didukung. Multi-line CSVs dan JSON tidak didukung.
-
Hanya file yang tidak terkompresi atau gzip atau bzip2 yang didukung.
-
Karakter komentar di baris terakhir tidak didukung.
-
Baris kosong di akhir file tidak diproses.
-
Hive di Amazon EMR mendukung tipe data primitif yang didukung S3 Select. Untuk informasi selengkapnya, lihat Jenis data di Panduan Pengguna Layanan Penyimpanan Sederhana Amazon.
Menentukan S3 Select dalam kode Anda
Untuk menggunakan S3 Select dalam tabel Hive Anda, buat tabel dengan menentukan com.amazonaws.emr.s3select.hive.S3SelectableTextInputFormat
sebagai INPUTFORMAT
nama kelas, dan tenntukan nilai untuk s3select.format
properti menggunakan TBLPROPERTIES
klausul.
Secara default, S3 Select dinonaktifkan saat Anda menjalankan kueri. Aktifkan S3 Select dengan mengatur s3select.filter
ke true
di sesi Hive Anda seperti yang ditunjukkan di bawah ini. Contoh di bawah ini menunjukkan bagaimana menentukan S3 Select saat membuat tabel dari CSV yang mendasari dan file JSON dan kemudian mengkueri tabel menggunakan pernyataan pilihan sederhana.
contoh Pernyataan BUAT TABEL untuk tabel berbasis CSV
CREATE TABLE mys3selecttable (
col1 string,
col2 int,
col3 boolean
)
ROW FORMAT DELIMITED FIELDS TERMINATED BY ','
STORED AS
INPUTFORMAT
'com.amazonaws.emr.s3select.hive.S3SelectableTextInputFormat'
OUTPUTFORMAT
'org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat'
LOCATION 's3://path/to/mycsvfile/'
TBLPROPERTIES (
"s3select.format" = "csv",
"s3select.headerInfo" = "ignore"
);
contoh Pernyataan BUAT TABEL untuk tabel berbasis JSON
CREATE TABLE mys3selecttable (
col1 string,
col2 int,
col3 boolean
)
ROW FORMAT SERDE 'org.apache.hive.hcatalog.data.JsonSerDe'
STORED AS
INPUTFORMAT
'com.amazonaws.emr.s3select.hive.S3SelectableTextInputFormat'
OUTPUTFORMAT
'org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat'
LOCATION 's3://path/to/json/'
TBLPROPERTIES (
"s3select.format" = "json"
);
contoh Pernyataan PILIH TABEL
SET s3select.filter=true;
SELECT * FROM mys3selecttable WHERE col2 > 10;