Вопрос: Не удалось найти дополнения для регистратора (org. apache .spark.deploy.SparkSubmit $$ anon $ 2) после spark-submit - PullRequest
0 голосов
/ 25 мая 2020

Быстрый запуск шаг за шагом с помощью Apache Spark, но, наконец, показ этого предупреждающего сообщения

20/05/25 09:43:05 WARN NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
log4j:WARN No appenders could be found for logger (org.apache.spark.deploy.SparkSubmit$$anon$2).
log4j:WARN Please initialize the log4j system properly.
log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.

Мой код:

package firstmaven;

import org.apache.spark.sql.SparkSession;
import org.apache.spark.sql.Dataset;
/**
 * Hello world!
 *
 */
public class App 
{
    public static void main( String[] args )
    {
        String logFile = "/data/spark/README.md";
        SparkSession spark = SparkSession.builder().appName("Simple Application")
                            .config("spark.master","local").getOrCreate();
        Dataset<String> logData = spark.read().textFile(logFile).cache();
        long numAs = logData.filter(s -> s.contains("a")).count();
        long numBs = logData.filter(s -> s.contains("b")).count();
        System.out.println("Lines with a: " + numAs + ", lines with b: " + numBs);

        System.out.println("Hello world");

        spark.stop();
    }
}

Что мне делать, чтобы он работал? Спасибо.

1 Ответ

0 голосов
/ 25 мая 2020

Вам необходимо указать значение столбца, по которому вы хотите выполнить фильтрацию. Проверьте этот фрагмент ниже:

import org.apache.spark.sql.Dataset;
import org.apache.spark.sql.SparkSession;

import java.util.List;

public class App {
    public static void main(String[] args) {
        String logFile = "/Users/ajay/input.txt";
        SparkSession spark = SparkSession.builder().appName("Simple Application")
                .config("spark.master", "local").getOrCreate();
        Dataset<String> logData = spark.read().textFile(logFile).cache();
        List<String> rowList = logData.collectAsList();
        System.out.println("rowList is = " + rowList);
        Dataset<String> rowDatasetWithA = logData.filter((logData.col("value").contains("a")));
        List<String> rowWithA = rowDatasetWithA.collectAsList();
        System.out.println("rowWithA is = " + rowWithA);

        Dataset<String> rowDatasetWithB = logData.filter((logData.col("value").contains("b")));
        List<String> rowWithB = rowDatasetWithB.collectAsList();
        System.out.println("rowWithB is = " + rowWithB);

        long numAs = rowWithA.size();
        long numBs = rowWithB.size();
        System.out.println("Lines with a: " + numAs + ", lines with b: " + numBs);

        spark.stop();
    }
}

Предполагая, что содержимое input.txt является следующим

a
b
c
a
aa 

Результатом приведенного выше фрагмента будет

rowList is = [a, b, c, a, aa]
rowWithA is = [a, a, aa]
rowWithB is = [b]
Lines with a: 3, lines with b: 1
enter code here

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...