este es mi escenario
Soy un entusiasta de Spark and Aws y estoy ansioso por comprender más sobre la tecnología.
Caso 1: Mi aplicación Spark se ejecuta en un clúster EMR y la aplicación Spark lee de una tabla Hive en s3 y escribe en una tabla Hive en s3. En este caso, los depósitos de S3 pertenecen al mismo usuario, por lo que agregué fs.s3.awsAccessKeyId y fs.s3.awsSecretAccessKey a un archivo de configuración. En mi caso lo agregué al hdfs-site.xml. usera tenía los permisos correctos para acceder al cubo, así que no hay problema.
Caso 2: estoy leyendo de 2 tablas de colmena en s3. tabla1 y tabla2. table1 pertenece al usuario1 y table2 pertenece al usuario2.
dado que no puedo especificar múltiples awsAccessKeyId en el archivo de configuración para s3. [Entiendo que s3a tiene un concepto de claves específicas del depósito, pero no estoy usando s3a, estoy usando s3.]
¿Cómo se admiten estos escenarios en aws EMR?
Entiendo que IAM, el rol de instancia EC2 y el rol de perfil pueden aplicarse aquí
Creo que la solución a su problema son los permisos entre cuentas . Por lo tanto, puede definir el permiso para que el usuario1 acceda al depósito del usuario2. También puedes echarle un vistazo a esto .
Apache Hadoop 2.8 admite la configuración por depósito. AWS EMR no lo hace, que es algo que tendrá que abordar con ellos.
Como solución alternativa, puede colocar secretos en el URI, por ejemplo, s3://usuario:secreto@bucket, recordando codificar caracteres especiales en el secreto. Después de hacer eso, la URL, los registros y los seguimientos de la pila deben considerarse datos confidenciales y no compartirse.