twitterStream не является членом org.apache.spark.streaming.StreamingContext? почему так? [Дубликат]

Краткий ответ: ваш метод foo() возвращается немедленно, а вызов $ajax() выполняется асинхронно после возврата функции . Проблема заключается в том, как и где сохранить результаты, полученные при вызове async, после его возврата.

В этом потоке было задано несколько решений. Возможно, самый простой способ - передать объект методу foo() и сохранить результаты в члене этого объекта после завершения асинхронного вызова.

function foo(result) {
    $.ajax({
        url: '...',
        success: function(response) {
            result.response = response;   // Store the async result
        }
    });
}

var result = { response: null };   // Object to hold the async result
foo(result);                       // Returns before the async completes

Обратите внимание, что вызов foo() ] все равно не вернут ничего полезного. Однако результат асинхронного вызова теперь будет сохранен в result.response.

1
задан Sachin Janani 10 March 2015 в 07:01
поделиться

1 ответ

В этом случае вам нужен поток твитов. Мы все знаем, что Sparks предоставляет Streams. Теперь давайте проверим, действительно ли Spark предоставляет что-то для взаимодействия с твиттером.

Open Spark API-docs -> http://spark.apache.org/docs/1.2.0/api/ scala / index.html # package

Теперь найдите twitter и bingo ... в пакете org.apache.spark.streaming есть что-то, называемое TwitterUtils. Теперь, поскольку он называется TwitterUtils и находится в пакете org.apache.spark.streaming, я думаю, что он предоставит помощникам для создания потока из twitter API.

Теперь нажмите на TwitterUtils и goto -> http://spark.apache.org/docs/1.2.0/api/scala/index.html#org.apache.spark.streaming.dstream.ReceiverInputDStream

И yup .. у него есть метод со следующей сигнатурой

def createStream(
                 ssc: StreamingContext,
                 twitterAuth: Option[Authorization],
                 filters: Seq[String] = Nil,
                 storageLevel: StorageLevel = StorageLevel.MEMORY_AND_DISK_SER_2
                ): ReceiverInputDStream[Status]

Он возвращает ReceiverInputDStream[ Status ], где Status - twitter4j.Status.

Параметры далее поясняются

ssc Объект StreamingContext

аутентификация twitterAuth Twitter4J или None использовать авторизацию Twitter4J по умолчанию OAuth; это использует фильтры system properties twitter4j.oauth.consumerKey, twitter4j.oauth.consumerSecret, twitter4j.oauth.accessToken и twitter4j.oauth.accessTokenSecret

. Набор строк фильтра позволяет получить только те твиты, которые соответствуют им.

storageLevel Storage уровень для использования для хранения полученных объектов

См. ... Документы API просты. Я полагаю, теперь вы должны быть немного более склонны читать документы API.

И ... Это означает, что вам нужно немного посмотреть (по крайней мере, начальную часть) в документацию twitter4j.

ПРИМЕЧАНИЕ. Этот ответ специально написан для объяснения «Почему бы не уклониться от документов API?». И был написан после тщательных мыслей. Поэтому, пожалуйста, не редактируйте, если ваше редактирование не вносит существенный вклад.

4
ответ дан Jacek Laskowski 25 August 2018 в 22:39
поделиться
Другие вопросы по тегам:

Похожие вопросы: