«Преобразование» данных датчика с помощью Apache Spark Java

У меня есть источник OPC, который генерирует данные датчика, и мне нужно «преобразовать» данные.

данные датчика хранятся в файле csv и выглядят так:

Sensor    Value  Timestamp
Sensor 1  1234   XYZ
Sensor 2  1342   XYZ+1
Sensor 3  ...
...
Sensor 1  1434   XYZ+n
Sensor 2  1523   XYZ+n+1
Sensor 3  ...
...

Контекст данных находится на заводе, каждый раз, когда производство заканчивается, новый продукт попадает на заводскую линию, и датчик снова запускается.

Структура назначения должна быть такой

Product   Sensor 1  Sensor 2  Sensor  ...
X         1234      1342      ...
X+1       1434      1523      ...
...   

Я новичок в Apache Spark на Java и понятия не имею, как преобразовать эти данные. Любая помощь будет оценена.

Спасибо за вашу помощь!

Обновлять

Как было сказано, в исходных данных нет привязки к конкретному товару. В данных назначения нет метки времени.

Моя идея состояла в том, чтобы агрегировать данные. Каждый раз, когда датчик 1 имеет значение, это новый продукт. Это означает, что с Timestamp и Sensorname вы можете получить продукт.

Но я действительно не включаю это в код. Если есть идеи по этому поводу, буду очень рад!

Использование Apache Spark с Java, чтобы прояснить ситуацию, извините, я забыл.

UNoWhoIam 19.05.2019 11:39

Я тоже это читал, но не знаю, как сопоставить это с приведенными выше данными... Можете ли вы мне помочь с этим?

UNoWhoIam 19.05.2019 11:51

Ваш первый csv не содержит «продукт», а исключенный csv не содержит метки времени.

Amit Kumar Lal 19.05.2019 11:54

@Hades, я обновил свой вопрос, так как это кажется решающим.

UNoWhoIam 19.05.2019 12:02

У меня есть ответ для вас, посмотрите, сработает ли он для вас.

Amit Kumar Lal 19.05.2019 16:40
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
5
59
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Ответ нашел сам:

Я добавил новый столбец, который разбивается на определенный продукт, а затем:

Dataset <Row> df = oldf
                        .groupBy("Product")
                        .pivot("Sensor")
                        .agg(functions.first(oldf.col("Value")))    

Очень доволен этим!

Другие вопросы по теме