AWS EMR Spark - вычислить среднее число из файла на S3 - PullRequest
0 голосов
/ 18 октября 2018

Я пытаюсь вычислить среднее число чисел, указанных в текстовом файле на S3 с Spark на AWS EMR.

Но я не уверен, что мне следует использовать MLib?или sparkSQL?Все ссылки, которые я вижу, относятся к совершенно другим вещам.Кто-нибудь может направить меня в правильном направлении?

     SparkConf sparkConf = new 
     SparkConf().setAppName("com.company.app.JavaSparkPi");
     JavaSparkContext jsc = new JavaSparkContext(sparkConf);

    //READING S3 FILE
    //PARSING THE FILE CREATING ARRAY OF NUMBERS

    int slices = 2;
    int n = 10 * slices;
    List<Integer> l = new ArrayList<Integer>(n);
    for (int i = 0; i < n; i++) {
        l.add(i);
    }

    //NOT SURE WHAT TO DO HERE 
    //SHOULD I USE PARALLELIZE ??
    JavaRDD<Integer> dataSet = jsc.parallelize(l, slices);

    int count = dataSet.map(new Function<Integer, Integer>() {
        @Override
        public Integer call(Integer integer) {
            //JUST MAP THE INTEGER TO INT?
            //OR SOME LOGIC NEEDS TO BE PLACED
            double x = Math.random() * 2 - 1;
            double y = Math.random() * 2 - 1;
            return (x * x + y * y < 1) ? 1 : 0;
        }
    }).reduce(new Function2<Integer, Integer, Integer>() {
        @Override
        public Integer call(Integer integer, Integer integer2) {
            //SOME LOGIC HERE?
            return integer + integer2;
        }
    });

    //WRITE S3
    System.out.println("Pi is roughly " + 4.0 * count / n);

    jsc.stop();

1 Ответ

0 голосов
/ 18 октября 2018

Возможно, вы хотите использовать функциональность Spark SQL / DataFrame.Эти API предоставляют преобразования, подобные SQL, которые обеспечат вам более высокую производительность, чем API более низкого уровня RDD.MLib - это компонент машинного обучения Spark, который вам не нужен для выполнения операций ETL, только если вы обучаете новую модель ML.

Вам следует начать с чтения.Во-первых, я бы начал с общей документации по искрам.Это даст вам представление о том, как вы поступаете с данными в свою работу Spark и взаимодействуете с ней.

Быстрый старт Spark

Затем я прочитал об EMR.В частности, о том, как создать кластер и как получить доступ к оболочке искры:

Создание кластера EMR с помощью Spark

Доступ к оболочке Spark в кластере EMR

Как только вы окажетесь в оболочке искры, вы сможете загружать данные из S3 так же, как из HDFS.Для простых текстовых файлов, например, вы можете просто сделать (при условии pyspark):

df = spark.read.text("s3://some-bucket/path/to/files/")
...