标签: twitter-util

Twitter未来优于Scala Future的优势是什么?

我知道Scala Future更好的原因很多.是否有任何理由使用Twitter Future?除了Finagle使用它之外.

twitter scala finagle twitter-finagle twitter-util

15
推荐指数
1
解决办法
4148
查看次数

使用反射和解释器动态解析字符串并在scala中返回函数

我试图从语法上解释以字符串形式给出的代码。例如:

val myString = "def f(x:Int):Int=x+1".
Run Code Online (Sandbox Code Playgroud)

我正在寻找一种可以从中返回实函数的方法:例如:

val myIncrementFunction = myDarkMagicFunctionThatWillBuildMyFunction(myString)
println(myIncrementFunction(3))
Run Code Online (Sandbox Code Playgroud)

将打印4

用例:我想稍后在代码中使用该解释代码中的一些简单功能。例如,他们可以提供像def fun(x:Int):Int = x + 1这样的字符串,然后使用解释器来编译/执行该代码,然后我就可以使用此fun(x ),例如在地图中。

问题在于该函数类型对我来说是未知的,这是一个大问题,因为我需要从IMain撤消。我读过有关反射,类型系统等的信息,经过一番谷歌搜索后,我到达了这一点。我也检查了twitter的util-eval,但是从他们的测试中的文档和示例中看不到太多,这是完全一样的。

如果我知道类型,我可以做类似的事情

val settings = new Settings
val imain = new IMain(settings)
val res = imain.interpret("def f(x:Int):Int=x+1; val ret=f _ ")
val myF = imain.valueOfTerm("ret").get.asInstanceOf[Function[Int,Int]]
println(myF(2))
Run Code Online (Sandbox Code Playgroud)

可以正常工作并打印3,但是我被上面提到的问题所困扰,我不知道该函数的类型,而此示例的工作仅是因为我强制转换为在定义用于测试IMain的字符串函数时使用的类型作品。

您知道任何方法可以实现此功能吗?

我是新手,所以如果我写错了,请原谅。

谢谢

reflection functional-programming scala type-inference twitter-util

5
推荐指数
1
解决办法
2038
查看次数

Twitter的Future.collect无法同时工作(Scala)

来自node.js背景,我是Scala的新手,我尝试使用Twitter的Future.collect来执行一些简单的并发操作.但我的代码显示顺序行为而不是并发行为.我究竟做错了什么?

这是我的代码,

import com.twitter.util.Future

def waitForSeconds(seconds: Int, container:String): Future[String]  = Future[String] {
  Thread.sleep(seconds*1000)
  println(container + ": done waiting for " + seconds + " seconds")
  container + " :done waiting for " + seconds + " seconds"
}

def mainFunction:String = {
  val allTasks = Future.collect(Seq(waitForSeconds(1, "All"), waitForSeconds(3, "All"), waitForSeconds(2, "All")))
  val singleTask = waitForSeconds(1, "Single")

  allTasks onSuccess  { res =>
    println("All tasks succeeded with result " + res)
  }

  singleTask onSuccess { res =>
    println("Single task succeeded with result …
Run Code Online (Sandbox Code Playgroud)

concurrency scala twitter-util

4
推荐指数
1
解决办法
604
查看次数

Future 是否有一个新线程?

像下面这样实现的 future 是否会获得一个新线程?显然不是(参见下面的输出)。为什么?如果我希望我的代码在新线程上运行,我该怎么办?

package MyTest

import com.twitter.util._

import scala.language.postfixOps

object Test {

  def test1 = Future {
    println("BeforeTest", Thread.currentThread())
    Thread.sleep(5000)
    println("AfterTest", Thread.currentThread())
  }

  def test2 = test1 onSuccess { case _ => println("Future on success") }

  def main(args: Array[String]): Unit = {

    println("main", Thread.currentThread())
    test2
    println("main123", Thread.currentThread())
  }
}
Run Code Online (Sandbox Code Playgroud)

输出:

(主,线程[运行主-0,5,运行主组-0])

(BeforeTest,线程[run-main-0,5,run-main-group-0])

(AfterTest,线程[run-main-0,5,run-main-group-0])

未来成功

(main123,线程[run-main-0,5,run-main-group-0])

scala twitter-util

3
推荐指数
1
解决办法
833
查看次数

Spark SQL:TwitterUtils Streaming由于未知原因而失败

我使用的是最新的Spark主,另外,我加载这些罐子: - 火花流-twitter_2.10-1.1.0-SNAPSHOT.jar - twitter4j核-4.0.2.jar - twitter4j流-4.0.2 .罐

我在shell中执行的简单测试程序如下所示:

import org.apache.spark.streaming._
import org.apache.spark.streaming.twitter._
import org.apache.spark.streaming.StreamingContext._

System.setProperty("twitter4j.oauth.consumerKey", "jXgXF...")
System.setProperty("twitter4j.oauth.consumerSecret", "mWPvQRl1....")
System.setProperty("twitter4j.oauth.accessToken", "26176....")
System.setProperty("twitter4j.oauth.accessTokenSecret", "J8Fcosm4...")

var ssc = new StreamingContext(sc, Seconds(1))
var tweets = TwitterUtils.createStream(ssc, None)
var statuses = tweets.map(_.getText)
statuses.print()

ssc.start()
Run Code Online (Sandbox Code Playgroud)

但是,我不会收到任何推文.我看到的主要错误是

14/08/04 10:52:35 ERROR scheduler.ReceiverTracker: Deregistered receiver for stream 0: Error starting receiver 0 - java.lang.NoSuchMethodError: twitter4j.TwitterStream.addListener(Ltwitter4j/StatusListener;)V
    at org.apache.spark.streaming.twitter.TwitterReceiver.onStart(TwitterInputDStream.scala:72)
    ....
Run Code Online (Sandbox Code Playgroud)

然后为每次迭代:

INFO scheduler.ReceiverTracker: Stream 0 received 0 blocks
Run Code Online (Sandbox Code Playgroud)

我不确定问题出在哪里.如何验证我的Twitter凭据是否被正确识别?可能还有另一个罐子丢失了吗?

apache-spark twitter-util

1
推荐指数
1
解决办法
2698
查看次数