Я пытаюсь Потоковые данные из Кафки СпаркНе удается получить доступ к данным в Кафки Спарк Потоковые глобально
JavaPairInputDStream<String, String> directKafkaStream = KafkaUtils.createDirectStream(ssc,
String.class,
String.class,
StringDecoder.class,
StringDecoder.class,
kafkaParams, topics);
Здесь я итерация по JavaPairInputDStream для обрабатывать РДД-х.
directKafkaStream.foreachRDD(rdd ->{
rdd.foreachPartition(items ->{
while (items.hasNext()) {
String[] State = items.next()._2.split("\\,");
System.out.println(State[2]+","+State[3]+","+State[4]+"--");
};
});
});
я могу иметь возможность получать данные в foreachRDD и мое требование иметь доступ к государству массива в глобальном масштабе. Когда я пытаюсь получить доступ к State Array во всем мире, я получаю исключение
java.lang.IndexOutOfBoundsException: Index: 0, Size: 0
Любые предложения? Благодарю.
'для доступа к массиву состояний по всему миру' означает? вне 'directKafkaStream.foreachRDD'? Я не думаю, что это возможно. Если бы вы могли объяснить ваш фактический прецедент (что вы хотите сделать с глобальным массивом состояний), я мог бы предложить лучшие решения. – code
YEs точно @Darshan Мне нужно «получить доступ к массиву состояний по всему миру». Моя учетная запись: у меня была таблица поиска с 4 кулаками [Код, Определение, Manhattan_Area, Other_states] в Hive. В потоковых данных у меня было 3 столбца [State, IssueDate, ViolationCode]. Я хочу выполнить операцию, например, рассчитать сумму суммы, которую правительство генерирует за каждый код нарушения за каждый день, исходя из состояния. –
В каком поле в улье находится поле поиска? и какое поле в потоковых данных вы ищете? И как ваше состояние [], как глобальная переменная, помогает вам? Кажется, что вы используете искрообразование неправильно. – code