বিদ্যমান মাতাল টেবিলের জন্য তৈরি বিবৃতিটি কীভাবে পাবেন / তৈরি করবেন?


91

ধরে নিই যে আপনার কাছে ইতিমধ্যে হাইভের "টেবিল" রয়েছে, অন্য টেস্টাব্দের মতো কোনও দ্রুত উপায় কি সেই টেবিলের জন্য "তৈরি করুন" বিবৃতি পেতে সক্ষম হবে?

উত্তর:



27

হাইভ ডাটাবেসের সমস্ত টেবিলের জন্য টেবিল ডিডিএল তৈরি করার পদক্ষেপ এবং পরে চালানোর জন্য পাঠ্য ফাইলটিতে রফতানি করুন:

পদক্ষেপ 1) নীচের বিষয়বস্তু দিয়ে একটি .sh ফাইল তৈরি করুন, hive_table_ddl.sh বলুন

#!/bin/bash
rm -f tableNames.txt
rm -f HiveTableDDL.txt
hive -e "use $1; show tables;" > tableNames.txt  
wait
cat tableNames.txt |while read LINE
   do
   hive -e "use $1;show create table $LINE;" >>HiveTableDDL.txt
   echo  -e "\n" >> HiveTableDDL.txt
   done
rm -f tableNames.txt
echo "Table DDL generated"

পদক্ষেপ 2) উপরের শেল স্ক্রিপ্টটি প্যারাম্যান্টর হিসাবে 'ডিবি নাম' দিয়ে পাস করুন

>bash hive_table_dd.sh <<databasename>>

আউটপুট:

আপনার ডিবি এর সমস্ত তৈরি টেবিলের বিবৃতিগুলি HiveTableDDL.txt এ লেখা হবে


4
আমরা কীভাবে নিশ্চিত করতে পারি যে বালতি এবং স্টোরেজ ফর্ম্যাটটি নতুন টেবিলের প্রতিরূপ হতে চলেছে।
YouAreAwesome

প্রতিটি বিবৃতি দেওয়ার পরে আপনার একটি সেমিকোলনও যুক্ত করা উচিত যাতে Hive -f HiveTableDDL.txt বলে স্ক্রিপ্টটি কার্যকর করা যায়।
মুটন

এই স্ক্রিপ্টটি আমার জন্য নীচের ত্রুটির সাথে ব্যর্থ হচ্ছে: বিবৃতিটি সংকলন করার সময় ত্রুটি: ব্যর্থ: পার্সএক্সেপশন লাইন 1:18 '|' এর নিকটে ইনপুট সনাক্ত করতে পারে না '|' টেবিলের নামটিতে আমি এই স্ক্রিপ্টটি বাইনলাইন সহ চালাচ্ছি কারণ এইচডিপি 3.0 হাইভেল-শেল অ্যাক্সেস সমর্থন করে না
অভিনব

@cfeduke এই স্ক্রিপ্টটি মাইভ টেবিলগুলির অবস্থান দেয়। এই ডিডিএলএসকে অন্য এইচআইভি লোকেশনে চালানোর জন্য কীভাবে অবস্থানের অংশটি এড়ানো যায়? 1000 টিরও বেশি টেবিলগুলিতে পরিবর্তন করা সম্ভব নয়
ব্যবহারকারীর 1

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.