मुझे फ़ाइलों को S3 से EMR के स्थानीय dir/home/hadoop प्रोग्रामेटिक रूप से लैम्ब्डा का उपयोग करके स्थानांतरित करने की आवश्यकता है।
S3DistCp HDFS को कॉपी करता है। मैं फिर ईएमआर में लॉगिन करता हूं और फाइलों को /home/hadoop पर लाने के लिए कमांडलाइन पर एक CopyToLocal hdfs कमांड चलाता हूं।
क्या लैम्ब्डा में boto3 का उपयोग करके S3 से Emr के स्थानीय dir में कॉपी करने के लिए कोई प्रोग्रामेटिक तरीका है?
2 जवाब
मैंने EMR को एक जॉब स्टेप सबमिट करने के लिए एक परीक्षण लैम्ब्डा फ़ंक्शन लिखा था जो S3 से EMR के स्थानीय dir में फ़ाइलों की प्रतिलिपि बनाता है। यह काम किया।
emrclient = boto3.client('emr', region_name='us-west-2')
def lambda_handler(event, context):
EMRS = emrclient.list_clusters( ClusterStates = ['STARTING', 'RUNNING', 'WAITING'] )
clusters = EMRS["Clusters"]
print(clusters)
for cluster in clusters:
ID = cluster["Id"]
response = emrclient.add_job_flow_steps(JobFlowId=ID,
Steps=[
{
'Name': 'AWS S3 Copy',
'ActionOnFailure': 'CONTINUE',
'HadoopJarStep': {
'Jar': 'command-runner.jar',
'Args':["aws","s3","cp","s3://XXX/","/home/hadoop/copy/","--recursive"],
}
}
],
)
अगर कॉपी करने के बेहतर तरीके हैं, तो कृपया मुझे बताएं।
क्लस्टर पर CopyToLocal
कमांड को दूरस्थ रूप से ट्रिगर करने के लिए AWS लैम्ब्डा फ़ंक्शन के लिए एक तरीके की आवश्यकता होगी।
लैम्ब्डा फ़ंक्शन कॉल कर सकता है क्लस्टर से अनुरोध करने के लिए ऐड-स्टेप्स एक स्क्रिप्ट चलाएँ जो यह क्रिया करती है।
संबंधित सवाल
नए सवाल
amazon-s3
अमेज़न S3 (सरल भंडारण सेवा) अमेज़न वेब सेवाओं से एक ऑनलाइन वस्तु भंडारण सेवा है। सवाल प्रसंस्करण के बारे में होना चाहिए। सामान्य S3 समर्थन, कार्यक्षमता, कॉन्फ़िगरेशन, आदि के बारे में प्रश्न OFF-TOPIC हैं।