Jika Anda belum memutuskan, saya akan melanjutkan dan menulis skema Avro untuk data Anda. Setelah selesai, memilih antara file kontainer Avro dan file Parquet semudah menukar, misalnya,
job.setOutputFormatClass(AvroKeyOutputFormat.class);
AvroJob.setOutputKeySchema(MyAvroType.getClassSchema());
untuk
job.setOutputFormatClass(AvroParquetOutputFormat.class);
AvroParquetOutputFormat.setSchema(job, MyAvroType.getClassSchema());
Format Parket tampaknya sedikit lebih intensif secara komputasi di sisi penulisan - misalnya, membutuhkan RAM untuk buffering dan CPU untuk memesan data, dll. Tetapi harus mengurangi I / O, biaya penyimpanan dan transfer serta membuatnya efisien membaca terutama dengan kueri seperti SQL (mis., Hive atau SparkSQL) yang hanya menangani sebagian kolom.
Dalam satu proyek, saya akhirnya kembali dari Parquet ke kontainer Avro karena skemanya terlalu luas dan bersarang (diturunkan dari beberapa kelas berorientasi objek yang cukup hierarkis) dan menghasilkan 1000-an kolom Parquet. Pada gilirannya, grup baris kami sangat lebar dan dangkal yang berarti butuh waktu lama sebelum kami dapat memproses sejumlah kecil baris di kolom terakhir setiap grup.
Saya belum memiliki banyak kesempatan untuk menggunakan Parquet untuk data yang lebih dinormalisasi / waras tetapi saya mengerti bahwa jika digunakan dengan baik, ini memungkinkan peningkatan kinerja yang signifikan.
Avro adalah format berbasis Baris. Jika Anda ingin mengambil data secara keseluruhan Anda dapat menggunakan Avro
Parket adalah format berbasis Kolom. Jika data Anda terdiri dari banyak kolom tetapi Anda tertarik pada subset kolom, Anda dapat menggunakan Parket
HBase berguna ketika sering memperbarui data. Avro cepat dalam pengambilan, Parket jauh lebih cepat.
sumber
Avro
Parket
Dari Memilih format penyimpanan data HDFS- Avro vs. Parquet dan lainnya
sumber
Baik Avro dan Parquet adalah format penyimpanan yang "mendeskripsikan sendiri", yang berarti keduanya menyematkan data, informasi metadata, dan skema saat menyimpan data dalam file. Penggunaan salah satu format penyimpanan tergantung pada kasus penggunaan. Tiga aspek merupakan dasar di mana Anda dapat memilih format mana yang akan optimal dalam kasus Anda:
Operasi Baca / Tulis : Parket adalah format file berbasis kolom. Ini mendukung pengindeksan. Oleh karena itu, kueri ini cocok untuk kueri data sekali tulis dan intensif baca, kompleks atau analitis, dengan latensi rendah. Ini biasanya digunakan oleh pengguna akhir / ilmuwan data.
Sementara Avro, sebagai format file berbasis baris, paling baik digunakan untuk operasi intensif tulis. Ini biasanya digunakan oleh insinyur data. Keduanya mendukung format serialisasi dan kompresi, meskipun mereka melakukannya dengan cara yang berbeda.
Alat : Parket sangat cocok untuk Impala. (Impala adalah mesin kueri SQL Massive Parallel Processing (MPP) RDBM yang tahu cara mengoperasikan data yang berada di satu atau beberapa mesin penyimpanan eksternal.) Sekali lagi Parquet cocok untuk kueri kompleks / interaktif dan cepat (latensi rendah ) mengeluarkan data dalam HDFS. Ini didukung oleh CDH (Cloudera Distribution Hadoop). Hadoop mendukung format Apache's Optimized Row Columnar (ORC) (pilihan bergantung pada distribusi Hadoop), sedangkan Avro paling cocok untuk pemrosesan Spark.
Evolusi Skema : Mengembangkan skema DB berarti mengubah struktur DB, datanya, dan dengan demikian pemrosesan kuerinya.
Baik Parquet dan Avro mendukung evolusi skema tetapi pada tingkat yang berbeda-beda.
Parket bagus untuk operasi 'tambahkan', misalnya menambahkan kolom, tetapi tidak untuk mengganti nama kolom kecuali 'baca' dilakukan oleh indeks.
Avro lebih cocok untuk menambahkan, menghapus dan umumnya mengubah kolom daripada Parquet. Secara historis, Avro telah memberikan serangkaian kemungkinan evolusi skema yang lebih kaya daripada Parquet, dan meskipun kemampuan evolusi skema mereka cenderung kabur, Avro masih bersinar di area itu, jika dibandingkan dengan Parquet.
sumber
Pemahaman Anda benar. Faktanya, kami mengalami situasi serupa selama migrasi data di DWH kami. Kami memilih Parquet daripada Avro karena penghematan disk yang kami dapatkan hampir dua kali lipat daripada yang kami dapatkan dengan AVro. Selain itu, waktu pemrosesan kueri jauh lebih baik daripada Avro. Tapi ya, kueri kami didasarkan pada agregasi, operasi berbasis kolom, dll. Oleh karena itu, Parquet dapat diprediksi sebagai pemenang yang jelas.
Kami menggunakan Hive 0.12 dari distro CDH. Anda menyebutkan bahwa Anda mengalami masalah dengan Hive + Parquet, apa itu? Kami tidak menemukan satupun.
sumber
Silver Blaze memberikan deskripsi yang bagus dengan contoh kasus penggunaan dan menjelaskan bagaimana Parket adalah pilihan terbaik untuknya. Masuk akal untuk mempertimbangkan satu sama lain tergantung pada kebutuhan Anda. Saya juga memberikan deskripsi singkat tentang format file lain yang berbeda bersama dengan perbandingan kompleksitas ruang waktu. Semoga membantu.
Ada banyak format file yang dapat Anda gunakan di Hive. Sebutan penting adalah AVRO, Parket. RCFile & ORC. Ada beberapa dokumen bagus yang tersedia secara online yang dapat Anda rujuk jika Anda ingin membandingkan kinerja dan pemanfaatan ruang dari format file ini. Mengikuti beberapa tautan berguna yang akan membantu Anda melanjutkan.
Posting Blog ini
Tautan ini dari MapR [Mereka tidak membahas Parket]
Link ini dari Inquidia
Tautan yang diberikan di atas akan membantu Anda. Saya harap ini menjawab pertanyaan Anda.
Terima kasih!
sumber
Sekadar penjelasan tentang Parket, Anda dapat merujuk di sini: http://bigdata.devcodenote.com/2015/04/parquet-file-format.html
Saya bermaksud untuk segera menulis di Avro dan perbandingan antara keduanya juga. Akan mempostingnya di sini setelah selesai.
sumber