Menggunakan format XHTML di AWS Glue - AWS Glue

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Menggunakan format XHTML di AWS Glue

AWSGlue mengambil data dari sumber dan menulis data ke target yang disimpan dan diangkut dalam berbagai format data. Jika data Anda disimpan atau diangkut dalam format data XHTML, dokumen ini memperkenalkan fitur yang tersedia untuk menggunakan data Anda di Glue. AWS

AWSGlue mendukung menggunakan format XHTML. Format ini mewakili struktur data yang sangat dapat dikonfigurasi dan didefinisikan secara kaku yang tidak berbasis baris atau kolom. XML-nya sangat terstandarisasi. Untuk pengenalan format oleh otoritas standar, lihat XMLEssentials.

Anda dapat menggunakan AWS Glue untuk membaca file XHTML dari Amazon S3, bzip serta gzip dan arsip yang berisi file XHTML. Anda mengonfigurasi perilaku kompresi pada Parameter koneksi S3 alih-alih dalam konfigurasi yang dibahas di halaman ini.

Tabel berikut menunjukkan fitur AWS Glue umum mana yang mendukung opsi format XHTML.

Baca Tulis Streaming dibaca Kelompokkan file kecil Bookmark tugas
Didukung Tidak didukung Tidak didukung Didukung Didukung

Contoh: Baca XMLdari S3

Pembaca XHTML mengambil nama tag XHTML. Ini memeriksa elemen dengan tag itu dalam inputnya untuk menyimpulkan skema dan mengisi a dengan nilai yang DynamicFrame sesuai. Fungsionalitas AWS Glue XMLberperilaku mirip dengan Sumber Data XMLuntuk Apache Spark. Anda mungkin bisa mendapatkan wawasan seputar perilaku dasar dengan membandingkan pembaca ini dengan dokumentasi proyek itu.

Prasyarat: Anda akan memerlukan jalur S3 (s3path) ke file atau folder XHTML yang ingin Anda baca, dan beberapa informasi tentang file XMLmu. Anda juga akan memerlukan tag untuk elemen XHTML yang ingin Anda baca,xmlTag.

Konfigurasi: Dalam opsi fungsi Anda, tentukanformat="xml". Dalam Andaconnection_options, gunakan paths kunci untuk menentukans3path. Anda dapat mengonfigurasi lebih lanjut bagaimana pembaca berinteraksi dengan S3 di file. connection_options Untuk detailnya, lihat Jenis dan opsi koneksi untuk ETL di AWS Glue:Parameter koneksi S3. Dalam Andaformat_options, gunakan rowTag kunci untuk menentukanxmlTag. Anda dapat mengkonfigurasi lebih lanjut bagaimana pembaca menafsirkan file XHTML di file Anda. format_options Untuk detailnya, lihat Referensi Konfigurasi XHTML.

Berikut skrip AWS Glue ETL menunjukkan proses membaca file XHTML atau folder dari S3.

Python

Untuk contoh ini, gunakan metode create_dynamic_frame.from_options.

# Example: Read XML from S3 # Set the rowTag option to configure the reader. from awsglue.context import GlueContext from pyspark.context import SparkContext sc = SparkContext.getOrCreate() glueContext = GlueContext(sc) dynamicFrame = glueContext.create_dynamic_frame.from_options( connection_type="s3", connection_options={"paths": ["s3://s3path"]}, format="xml", format_options={"rowTag": "xmlTag"}, )

Anda juga dapat menggunakan DataFrames dalam script (pyspark.sql.DataFrame).

dataFrame = spark.read\ .format("xml")\ .option("rowTag", "xmlTag")\ .load("s3://s3path")
Scala

Untuk contoh ini, gunakan operasi getSourceWithFormat.

// Example: Read XML from S3 // Set the rowTag option to configure the reader. import com.amazonaws.services.glue.util.JsonOptions import com.amazonaws.services.glue.GlueContext import org.apache.spark.sql.SparkSession val glueContext = new GlueContext(SparkContext.getOrCreate()) val sparkSession: SparkSession = glueContext.getSparkSession object GlueApp { def main(sysArgs: Array[String]): Unit = { val dynamicFrame = glueContext.getSourceWithFormat( formatOptions=JsonOptions("""{"rowTag": "xmlTag"}"""), connectionType="s3", format="xml", options=JsonOptions("""{"paths": ["s3://s3path"], "recurse": true}""") ).getDynamicFrame() }

Anda juga dapat menggunakan DataFrames dalam script (org.apache.spark.sql.DataFrame).

val dataFrame = spark.read .option("rowTag", "xmlTag") .format("xml") .load("s3://s3path“)

Referensi konfigurasi XML

Anda dapat menggunakan yang berikut ini di format_options mana pun pustaka AWS Glue menentukanformat="xml":

  • rowTag- Menentukan tag XMLdalam file untuk memperlakukan sebagai baris. Tag baris tidak dapat berupa penutupan-sendiri.

    • Jenis: Teks, Diperlukan

  • encoding- Menentukan pengkodean karakter. Ini bisa berupa nama atau alias Charset yang didukung oleh lingkungan runtime kami. Kami tidak membuat jaminan khusus seputar dukungan pengkodean, tetapi pengkodean utama harus berfungsi.

    • Jenis: Teks, Default: "UTF-8"

  • excludeAttribute- Menentukan apakah Anda ingin mengecualikan atribut dalam elemen atau tidak.

    • Jenis: Boolean, Default: false

  • treatEmptyValuesAsNulls- Menentukan apakah untuk memperlakukan ruang putih sebagai nilai null.

    • Jenis: Boolean, Default: false

  • attributePrefix— Awalan untuk atribut untuk membedakannya dari teks elemen anak. Prefiks ini digunakan untuk nama bidang.

    • Jenis: Teks, Default: "_"

  • valueTag— Tag yang digunakan untuk nilai ketika ada atribut dalam elemen yang tidak memiliki anak.

    • Jenis: Teks, Default: "_VALUE"

  • ignoreSurroundingSpaces- Menentukan apakah ruang putih yang mengelilingi nilai-nilai harus diabaikan.

    • Jenis: Boolean, Default: false

  • withSchema— Berisi skema yang diharapkan, dalam situasi di mana Anda ingin mengganti skema yang disimpulkan. Jika Anda tidak menggunakan opsi ini, AWS Glue simpulkan skema dari data XHTML.

    • Jenis: Teks, Default: Tidak berlaku

    • Nilainya harus berupa objek JSON yang mewakili aStructType.

Tentukan skema XMLnya secara manual

Contoh skema XHTML manual

Ini adalah contoh penggunaan pilihan format withSchema untuk menentukan skema untuk data XML.

from awsglue.gluetypes import * schema = StructType([ Field("id", IntegerType()), Field("name", StringType()), Field("nested", StructType([ Field("x", IntegerType()), Field("y", StringType()), Field("z", ChoiceType([IntegerType(), StringType()])) ])) ]) datasource0 = create_dynamic_frame_from_options( connection_type, connection_options={"paths": ["s3://xml_bucket/someprefix"]}, format="xml", format_options={"withSchema": json.dumps(schema.jsonValue())}, transformation_ctx = "" )