Как читать данные с S3, используя Sparklyr в R (в EC2)? [Дубликат]

Селектор CSS « General Sibling Combinator » может быть использован для того, что вы хотите:

E ~ F {
    property: value;
}

Это соответствует любому элементу F, которому предшествует E ].

40
задан mrsrinivas 30 November 2016 в 10:27
поделиться

11 ответов

Вы можете использовать s3n: // и преобразовать выходной сигнал искрового исхода в тот, который непосредственно выводит файл (см. этот фрагмент )

1
ответ дан Arnon Rotem-Gal-Oz 18 August 2018 в 05:07
поделиться
  • 1
    Это выглядит рискованно: коммиттер файлов существует по какой-то причине. Кроме того, я слышал, что это своего рода операция по умолчанию на дистрибутиве Amazon EMR, она не использовалась внешне для обеспечения стабильности – tribbloid 23 May 2015 в 21:50
  • 2
    Постскриптум Повышение эффективности не является моей целью сейчас. Имеет смысл только оптимизировать, если он работает. Но теперь весь доступ S3 был вырезан – tribbloid 23 May 2015 в 21:51
  • 3
    Хорошо, я получил недостающую часть: используйте эти параметры, чтобы включить s3 & amp; s3n (s3a все еще не работает): --conf spark.hadoop.fs.s3n.impl = org.apache.hadoop.fs.s3native.NativeS3FileSystem --conf spark.hadoop.fs.s3.impl = org.apache .hadoop.fs.s3.S3FileSystem – tribbloid 24 May 2015 в 17:24
  • 4
    Мое предыдущее решение по-прежнему нестабильно даже для s3 и s3n: я получаю java.lang.RuntimeException: java.lang.ClassNotFoundException: Класс org.apache.hadoop.fs.s3native.NativeS3FileSystem не найден при развертывании в кластере. – tribbloid 24 May 2015 в 18:33
  • 5
    В конце концов нам удалось запустить s3a, посмотрев этот пост в блоге arnon.me/2015/08/spark-parquet-s3 – Arnon Rotem-Gal-Oz 12 August 2015 в 13:32

, как вы сказали, hasoop 2.6 не поддерживает s3a, а последний искровой разряд 1.6.1 не поддерживает hadoop 2.7, но искру 2.0 определенно не проблема с hadoop 2.7 и s3a.

для spark 1.6.x, мы сделали какой-то грязный хак, с драйвером s3 от EMR ... вы можете посмотреть этот документ: https://github.com/zalando/spark-appliance#emrfs-support

, если вы все еще хотите попробовать использовать s3a в искре 1.6.x, см. ответ здесь: https://stackoverflow.com/a/37487407/5630352

4
ответ дан Community 18 August 2018 в 05:07
поделиться

Почувствовав из первых рук разницу между s3a и s3n - 7.9GB данных, переданных на s3a, было около ~ 7 минут, а 7,9 ГБ данных на s3n заняло 73 минуты [us-east-1 to us-west-1, к сожалению, в оба случая; Redshift и Lambda, являющиеся нами-восточным-1 в это время], это очень важная часть стека, чтобы получить правильное решение, и это стоит разочарования.

Вот ключевые части по состоянию на декабрь 2015 года:

  1. Для вашего Spark-кластера потребуется версия Hadoop 2.x или выше. Если вы используете сценарии установки Spark EC2 и, возможно, пропустили его, переключатель для использования чего-либо, кроме 1.0, должен указать --hadoop-major-version 2 (который использует CDH 4.2 на момент написания этой статьи).
  2. Вам нужно будет включают в себя то, что поначалу может показаться устаревшей библиотекой AWS SDK (построенной в 2014 году как версия 1.7.4) для версий Hadoop до версии 2.7.1 (стабильная): aws-java-sdk 1.7.4. Насколько я могу судить об использовании этого вместе со специфическими JAR-пакетами AWS SDK для 1.10.8, ничего не сломалось.
  3. Вам также понадобится хаоп-aws 2.7.1 JAR в пути к классам. Этот JAR содержит класс org.apache.hadoop.fs.s3a.S3AFileSystem.
  4. В spark.properties вы, вероятно, хотите, чтобы некоторые настройки выглядели следующим образом:
    spark.hadoop.fs.s3a.impl=org.apache.hadoop.fs.s3a.S3AFileSystem  
    spark.hadoop.fs.s3a.access.key=ACCESSKEY  
    spark.hadoop.fs.s3a.secret.key=SECRETKEY
    

Я подробно описал этот список более подробно на сообщении я написал , поскольку я проработал свой путь через этот процесс. Кроме того, я рассмотрел все случаи исключения, которые я ударил по пути и что я считаю причиной каждого и как исправить их.

34
ответ дан Dave Newton 18 August 2018 в 05:07
поделиться

Мы используем искру 1.6.1 с Mesos, и у нас появилось много проблем, связанных с S3 от искры. Я отвечаю за cfeduke за ответ. Небольшое изменение, которое я сделал, заключалось в добавлении координат maven в конфигурацию spark.jar в файле spark-defaults.conf. Я пробовал с hadoop-aws: 2.7.2, но все еще получал много ошибок, поэтому мы вернулись к 2.7.1. Ниже приведены изменения в spark-defaults.conf, которые работают для нас:

spark.jars.packages             net.java.dev.jets3t:jets3t:0.9.0,com.google.guava:guava:16.0.1,com.amazonaws:aws-java-sdk:1.7.4,org.apache.hadoop:hadoop-aws:2.7.1
spark.hadoop.fs.s3a.impl        org.apache.hadoop.fs.s3a.S3AFileSystem
spark.hadoop.fs.s3a.access.key  <MY ACCESS KEY>
spark.hadoop.fs.s3a.secret.key  <MY SECRET KEY>
spark.hadoop.fs.s3a.fast.upload true

Спасибо, cfeduke за то, что вы нашли время, чтобы написать свое сообщение. Это было очень полезно.

9
ответ дан Kyle Burke 18 August 2018 в 05:07
поделиться

Вы также можете добавить зависимости S3A к пути к классам с помощью spark-defaults.conf.

Пример:

spark.driver.extraClassPath     /usr/local/spark/jars/hadoop-aws-2.7.5.jar
spark.executor.extraClassPath   /usr/local/spark/jars/hadoop-aws-2.7.5.jar
spark.driver.extraClassPath     /usr/local/spark/jars/aws-java-sdk-1.7.4.jar
spark.executor.extraClassPath   /usr/local/spark/jars/aws-java-sdk-1.7.4.jar

Или просто:

spark.jars     /usr/local/spark/jars/hadoop-aws-2.7.5.jar,/usr/local/spark/jars/aws-java-sdk-1.7.4.jar

Просто убедитесь, что ваша версия AWS SDK соответствует версии Hadoop. Для получения дополнительной информации об этом см. Этот ответ: Невозможно получить доступ к данным S3 с помощью Spark 2.2

2
ответ дан LXXIII 18 August 2018 в 05:07
поделиться

Я пишу этот ответ для доступа к файлам с S3A от Spark 2.0.1 на Hadoop 2.7.3

Скопируйте баннеры AWS (hadoop-aws-2.7.3.jar и aws-java-sdk-1.7.4.jar), которые по умолчанию поставляются с Hadoop

  • Подсказка: если местоположения банки не уверены? можно использовать команду find в качестве привилегированного, команды могут быть ..
     find / -name hadoop-aws*.jar
     find / -name aws-java-sdk*.jar
    

в искровой класс, который содержит все искровые баки

  • Подсказка: мы можем не указывать прямое местоположение (оно должно быть в файле свойств), так как я хочу сделать общий ответ для дистрибутивов и Linux-аксессуаров. Исходный путь пути может быть идентифицирован командой find ниже
     find / -name spark-core*.jar
    

в spark-defaults.conf

Подсказка: (В основном она будет помещена в /etc/spark/conf/spark-defaults.conf)

#make sure jars are added to CLASSPATH
spark.yarn.jars=file://{spark/home/dir}/jars/*.jar,file://{hadoop/install/dir}/share/hadoop/tools/lib/*.jar


spark.hadoop.fs.s3a.impl=org.apache.hadoop.fs.s3a.S3AFileSystem  
spark.hadoop.fs.s3a.access.key={s3a.access.key} 
spark.hadoop.fs.s3a.secret.key={s3a.secret.key} 
#you can set above 3 properties in hadoop level `core-site.xml` as well by removing spark prefix.

в искровом представлении включают фляги (aws-java-sdk и hadoop-aws) в --driver-class-path, если это необходимо.

spark-submit --master yarn \
  --driver-class-path {spark/jars/home/dir}/aws-java-sdk-1.7.4.jar \
  --driver-class-path {spark/jars/home/dir}/hadoop-aws-2.7.3.jar \
  other options

Примечание:

Убедитесь, что пользователь Linux с привилегиями чтения перед запуском команды find для предотвращения ошибки Permission denied

9
ответ дан mrsrinivas 18 August 2018 в 05:07
поделиться

Я начал работать с использованием предварительно созданного двоичного кода Spark 1.4.1 с hadoop 2.6 Убедитесь, что вы установили оба параметра spark.driver.extraClassPath и spark.executor.extraClassPath, указывающие на две банки (hadoop-aws и aws-java-sdk). Если вы запустите кластер, убедитесь, что ваши исполнители имеют доступ к файлам jar в кластере.

12
ответ дан Prasad Khode 18 August 2018 в 05:07
поделиться
  • 1
    такая же проблема: org.apache.spark.SparkException: Работа прерывается из-за срыва этапа: Задача 3 на этапе 1.0 завершилась неудачно 4 раза, последний сбой: потерянная задача 3.3 на этапе 1.0 (TID 27, 10.122.113.63): java.io. IOException: нет файловой системы для схемы: s3n – tribbloid 2 October 2015 в 23:21
  • 2
    Если он по умолчанию для всех s3 по умолчанию, добавьте две переменные в $ SPARK_HOME / conf / spark-defaults.conf. Ссылка deploymentzone.com/2015/12/20/s3a-on-spark-on-aws-ec2 - хороший источник. – Robin Loxley 28 December 2015 в 09:25

Вот решение для pyspark (возможно, с прокси):

def _configure_s3_protocol(spark, proxy=props["proxy"]["host"], port=props["proxy"]["port"], endpoint=props["s3endpoint"]["irland"]):
    """
    Configure access to the protocol s3
    https://sparkour.urizone.net/recipes/using-s3/
    AWS Regions and Endpoints
    https://docs.aws.amazon.com/general/latest/gr/rande.html
    """
    sc = spark.sparkContext
    sc._jsc.hadoopConfiguration().set("fs.s3a.impl", "org.apache.hadoop.fs.s3a.S3AFileSystem")
    sc._jsc.hadoopConfiguration().set("fs.s3a.access.key",  os.environ.get("AWS_ACCESS_KEY_ID"))
    sc._jsc.hadoopConfiguration().set("fs.s3a.secret.key", os.environ.get("AWS_SECRET_ACCESS_KEY"))
    sc._jsc.hadoopConfiguration().set("fs.s3a.proxy.host", proxy)
    sc._jsc.hadoopConfiguration().set("fs.s3a.proxy.port", port)
    sc._jsc.hadoopConfiguration().set("fs.s3a.endpoint", endpoint)
    return spark
2
ответ дан raul ferreira 18 August 2018 в 05:07
поделиться

Используя Spark 1.4.1, предварительно построенный с помощью Hadoop 2.6, я могу заставить s3a: // работать при развертывании в кластер Spark Standalone, добавив файлы хаоса-aws и aws-java-sdk jar из Hadoop 2.7.1 distro (найденный в $ HADOOP_HOME / share / hadoop / tools / lib из Hadoop 2.7.1) в мою переменную среды SPARK_CLASSPATH в файле $ SPARK_HOME / conf / spark-env.sh.

4
ответ дан richvt2k 18 August 2018 в 05:07
поделиться
  • 1
    В самом деле? Позвольте мне снова попробовать ваши решения 1.4.1, я не был связан с s3a, поскольку issues.apache.org/jira/browse/SPARK-7442 по-прежнему отмечен как «неразрешенный», – tribbloid 17 August 2015 в 15:54
  • 2
    Ive попробовал, кажется, что что-то еще отсутствует, я все время получаю эту ошибку: org.apache.spark.SparkException: Иск прерывается из-за срыва этапа: Задача 3 в стадии 2.0 не удалась 4 раза, последний сбой: потерянная задача 3.3 на этапе 2.0 (TID 47, 10.122.113.63): java.io.IOException: Нет Файловая система для схемы: s3n – tribbloid 2 October 2015 в 23:12
  • 3
    О, и вот в вашем решении конфликт устаревания: | SPARK_CLASSPATH был обнаружен (установлен на «$ value»). | Это устарело в Spark 1.0+. | | Вместо этого используйте: | - ./spark -submit с --driver-class-path для расширения пути класса драйвера | - spark.executor.extraClassPath для расширения пути класса исполнителя – tribbloid 2 October 2015 в 23:29
  • 4
    В частности, даже до 31 декабря 2015 года вам необходимо использовать библиотеку AWS SDK, составленную в 2014 году: aws-java-sdk 1.7.4; этот ответ выше является наиболее точным ответом на этот вопрос. – cfeduke 1 January 2016 в 04:28

Я использую искру версии 2.3, и когда я сохраняю набор данных с использованием искра вроде:

dataset.write().format("hive").option("fileFormat", "orc").mode(SaveMode.Overwrite)
    .option("path", "s3://reporting/default/temp/job_application")
    .saveAsTable("job_application");

Он отлично работает и сохраняет мои данные в s3.

0
ответ дан Stephen Rauch 18 August 2018 в 05:07
поделиться
  • 1
    ЕСЛИ вы используете "s3 & quot; то вы используете Amazon EMR, поэтому не связаны. И это работало для вас в отсутствие сбоев и наблюдаемых несоответствий. Вы не можете полагаться на то, что работает на производстве, следовательно, S3A-коммиттеры Hadoop 3.1 – Steve Loughran 24 April 2018 в 20:13

Вот подробности по состоянию на октябрь 2016 года, представленные на Spark Summit EU: Apache Spark и объектные магазины .

Ключевые моменты

  • Прямой выходной коммиттер ушел из Spark 2.0 из-за риска / опыта повреждения данных.
  • В файле FileOutputCommitter есть несколько настроек для уменьшения переименований, но не устранение их
  • m, работая с некоторыми коллегами, чтобы сделать коммиттер O (1), полагаясь на Apache Dynamo, чтобы дать нам такую ​​последовательность, в которой мы нуждаемся.
  • Чтобы использовать S3a, получите правильный путь к классу.
  • И будьте на Hadoop 2.7.z; 2.6.x имели некоторые проблемы, которые были решены к тому времени HADOOP-11571 .
  • Существует PR под SPARK-7481, чтобы вытащить все в источник искры, который вы создаете сами. В противном случае спросите, кто бы ни поступил в двоичные файлы, чтобы выполнить работу.
  • Hadoop 2.8 собирается добавить основные улучшения перфорации HADOOP-11694 .

Размещение продукта: сторона HADOOP-11694 с поддержкой чтения включена в HDP2.5; Документация Spark и S3 может представлять интерес, особенно параметры настройки.

7
ответ дан Steve Loughran 18 August 2018 в 05:07
поделиться
Другие вопросы по тегам:

Похожие вопросы: