У меня есть источник 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 вы можете получить продукт.
Но я действительно не включаю это в код. Если есть идеи по этому поводу, буду очень рад!
Я тоже это читал, но не знаю, как сопоставить это с приведенными выше данными... Можете ли вы мне помочь с этим?
Ваш первый csv не содержит «продукт», а исключенный csv не содержит метки времени.
@Hades, я обновил свой вопрос, так как это кажется решающим.
У меня есть ответ для вас, посмотрите, сработает ли он для вас.




Ответ нашел сам:
Я добавил новый столбец, который разбивается на определенный продукт, а затем:
Dataset <Row> df = oldf
.groupBy("Product")
.pivot("Sensor")
.agg(functions.first(oldf.col("Value")))
Очень доволен этим!
Использование Apache Spark с Java, чтобы прояснить ситуацию, извините, я забыл.