Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Halaman ini menjelaskan AWS Glue cara menggunakan skema dari file CSV yang memiliki tanda kutip di sekitar nilai data untuk setiap kolom atau dari file CSV yang menyertakan nilai header.
Menangani data CSV terlampir dalam tanda kutip
Misalkan file CSV memiliki bidang data yang diapit tanda kutip ganda, seperti pada contoh berikut.
"John","Doe","123-555-1231","John said \"hello\""
"Jane","Doe","123-555-9876","Jane said \"hello\""
Untuk menjalankan kueri di Athena pada tabel yang dibuat dari file CSV yang memiliki nilai kutipan, Anda harus memodifikasi properti tabel AWS Glue untuk menggunakan Open De. CSVSer Untuk informasi selengkapnya tentang SerDe OpenCSV, lihat. Buka CSV SerDe untuk memproses CSV
Untuk mengedit properti tabel di AWS Glue konsol
-
Di panel navigasi AWS Glue konsol, pilih Tabel.
-
Pilih tautan untuk tabel yang ingin Anda edit, lalu pilih Tindakan, Edit tabel.
-
Pada halaman Edit tabel, buat perubahan berikut:
-
Untuk Serialisasi lib, masukkan.
org.apache.hadoop.hive.serde2.OpenCSVSerde
-
UntukParameter serde, masukkan nilai berikut untuk kunci
escapeChar
,quoteChar
, danseparatorChar
:-
Untuk
escapeChar
, masukkan garis miring terbalik (\
). -
Untuk
quoteChar
, masukkan kutipan ganda ("
). -
Untuk
separatorChar
, masukkan koma (,
).
-
-
-
Pilih Simpan.
Untuk informasi selengkapnya, lihat Melihat dan mengedit detail tabel di Panduan AWS Glue Pengembang.
Anda juga dapat memperbarui properti AWS Glue tabel secara terprogram. Gunakan operasi AWS Glue UpdateTableAPI atau AWS CLI perintah update-table untuk memodifikasi SerDeInfo
blok dalam definisi tabel, seperti pada contoh JSON berikut.
"SerDeInfo": {
"name": "",
"serializationLib": "org.apache.hadoop.hive.serde2.OpenCSVSerde",
"parameters": {
"separatorChar": ","
"quoteChar": "\""
"escapeChar": "\\"
}
},
Menangani file CSV dengan header
Jika Anda menentukan tabel di Athena denganCREATE TABLE
pernyataan, Anda dapat menggunakanskip.header.line.count
untuk mengabaikan header dalam data CSV Anda, seperti dalam contoh berikut.
...
STORED AS TEXTFILE
LOCATION 's3://amzn-s3-demo-bucket/csvdata_folder
/';
TBLPROPERTIES ("skip.header.line.count"="1")
Atau, Anda dapat menghapus header CSV terlebih dahulu sehingga informasi header tidak termasuk dalam hasil permintaan Athena. Salah satu cara untuk mencapainya adalah dengan menggunakan tugas AWS Glue , yang melakukan pekerjaan extract, transform, and load (ETL). Anda dapat menulis skrip dalam AWS Glue menggunakan bahasa yang merupakan perpanjangan dari dialek PySpark Python. Untuk informasi selengkapnya, lihat Menulis Pekerjaan di AWS Glue di Panduan AWS Glue Pengembang.
Contoh berikut menunjukkan fungsi dalam AWS Glue skrip yang menulis frame dinamis menggunakanfrom_options
, dan menetapkan opsi writeHeader
format ke false, yang menghapus informasi header:
glueContext.write_dynamic_frame.from_options(frame = applymapping1, connection_type = "s3", connection_options = {"path": "s3://amzn-s3-demo-bucket/MYTABLEDATA/"}, format = "csv", format_options = {"writeHeader": False}, transformation_ctx = "datasink2")