在RStudio 中使用knit()/ knit2pdf()代替"编译PDF" 1按钮有什么(可能不需要的)副作用?
大多数用户knitr似乎都在RStudio中编写文档,并使用"编译PDF"/"编织HTML"按钮编译文档.这大部分时间都可以顺利运行,但每隔一段时间就有一些使用编译按钮无法实现的特殊要求.在这些情况下,解决方案通常是直接调用knit()/ knit2pdf()/ rmarkdown::render()(或类似函数).
一些例子:
使用knit2pdf()而不是"编译PDF"按钮通常提供这种问题的简单解决方案.然而,这是有代价的:"编译PDF" 在一个单独的过程和环境中处理文档有根本区别,而knit2pdf()朋友则不然.
这具有影响,问题在于并非所有这些影响都是显而易见的.以knit()使用全局环境中的对象的事实为例(而"编译PDF"没有)作为示例.在上述第二个例子的情况下,这可能是显而易见的,并且是期望的行为,但是当用于克服例如示例1和3中的问题时,这是意想不到的结果knit().
此外,还有更微妙的差异:
每当我读/写使用的建议knit2pdf()而不是"编译PDF"时,我认为"正确,但用户应该理解后果......".
因此,这里的问题是:
在RStudio 中使用
knit()/knit2pdf()代替"编译PDF"按钮有什么(可能不需要的)副作用?
如果对这个问题有一个全面的(社区维基?)答案,可以将其与未来的建议联系起来knit2pdf().
这个问题有很多相关的问题.然而,他们要么只提出代码(或多或少)重现RStudio按钮的行为,要么他们解释"基本上"发生了什么,而没有提到可能的陷阱.其他人看起来像是非常相似的问题,但结果却是一个(非常)特殊情况.一些例子:
我在scalaLang的Twitter上发现了一篇有趣的帖子.此代码编译和工作的位置
class A(implicit implicit val b: Int)
val objA = new A()(42)
Run Code Online (Sandbox Code Playgroud)
有人可以解释一下它是如何工作的?我阅读了implicits的文档,但没有找到这样的案例.请解释一下这里发生了什么.
任何帮助表示赞赏!
在开发期间,我一直在"客户端"模式下运行我的火花作业.我使用"--file"与执行程序共享配置文件.Driver正在本地读取配置文件.现在我想以"集群"模式部署作业.我现在很难与驱动程序共享配置文件.
例如,我将配置文件名称作为extraJavaOptions传递给驱动程序和执行程序.我正在使用SparkFiles.get()读取文件
val configFile = org.apache.spark.SparkFiles.get(System.getProperty("config.file.name"))
Run Code Online (Sandbox Code Playgroud)
这在执行程序上运行良好但在驱动程序上失败.我认为文件只与执行程序共享,而不是与运行驱动程序的容器共享.一种选择是将配置文件保存在S3中.我想检查是否可以使用spark-submit实现这一点.
> spark-submit --deploy-mode cluster --master yarn --driver-cores 2
> --driver-memory 4g --num-executors 4 --executor-cores 4 --executor-memory 10g \
> --files /home/hadoop/Streaming.conf,/home/hadoop/log4j.properties \
> --conf **spark.driver.extraJavaOptions**="-Dlog4j.configuration=log4j.properties
> -Dconfig.file.name=Streaming.conf" \
> --conf **spark.executor.extraJavaOptions**="-Dlog4j.configuration=log4j.properties
> -Dconfig.file.name=Streaming.conf" \
> --class ....
Run Code Online (Sandbox Code Playgroud) 我正在尝试使用Spark Streaming从Kafka主题中读取记录.
这是我的代码:
object KafkaConsumer {
import ApplicationContext._
def main(args: Array[String]) = {
val kafkaParams = Map[String, Object](
"bootstrap.servers" -> "localhost:9092",
"key.deserializer" -> classOf[StringDeserializer],
"value.deserializer" -> classOf[StringDeserializer],
"group.id" -> s"${UUID.randomUUID().toString}",
"auto.offset.reset" -> "earliest",
"enable.auto.commit" -> (false: java.lang.Boolean)
)
val topics = Array("pressure")
val stream = KafkaUtils.createDirectStream[String, String](
streamingContext,
PreferConsistent,
Subscribe[String, String](topics, kafkaParams)
)
stream.print()
stream.map(record => (record.key, record.value)).count().print()
streamingContext.start()
}
}
Run Code Online (Sandbox Code Playgroud)
我运行时没有显示任何内容.
要检查pressure主题中是否确实存在数据,我使用命令行方法,它会显示记录:
bin/kafka-console-consumer.sh \
--bootstrap-server localhost:9092 \
--topic pressure \
--from-beginning
Run Code Online (Sandbox Code Playgroud)
输出:
TimeStamp:07/13/16 15:20:45:226769,{'Pressure':'834'}
TimeStamp:07/13/16 15:20:45:266287,{'Pressure':'855'}
TimeStamp:07/13/16 …Run Code Online (Sandbox Code Playgroud) 我目前正在研究时间序列数据并使用 Grafana 以图表的形式显示它。我有一个用例,当值从特定级别下降时,应该向用户询问一个问题,并且其响应应该保存在数据源中,就像 Its Influxdb 的情况一样。
举个例子,如果温度值下降到 10 F,那么应该向用户提出一些问题,问这正常吗?其回答“是”或“否”应添加回 influx。
有没有办法使用 Grafana 来实现这一目标?
以下是两种情况:
情况1:
scala> "".split('f')
res3: Array[String] = Array("")
Run Code Online (Sandbox Code Playgroud)
案例2:
scala> "f".split('f')
res5: Array[String] = Array()
Run Code Online (Sandbox Code Playgroud)
为什么它在这里表现不同!具体的解释会很棒!
星火扔ClassCastExpection在WrappedArray进行任何操作时
示例:我有一个如下所示的地图输出
输出:
Map(1 -> WrappedArray(Pan4), 2 -> WrappedArray(Pan15), 3 -> WrappedArray(Pan16, Pan17, Pan18), 4 -> WrappedArray(Pan19, Pan1, Pan2, Pan3, Pan4, Pan5, Pan6))]
Run Code Online (Sandbox Code Playgroud)
当调用map.values时,其打印输出如下输出
MapLike(WrappedArray(Pan4), WrappedArray(Pan15), WrappedArray(Pan16, Pan17, Pan18), WrappedArray(Pan19, Pan1, Pan2, Pan3, Pan4, Pan5, Pan6))
Run Code Online (Sandbox Code Playgroud)
如果调用map.values.map(arr => arr)或抛出异常map.values.forEach { value => println(value)}
我无法对包装的数组执行任何操作.我只需要每个wrappedArray中存在的元素的大小
Error StackTrace
------------------
java.lang.ClassCastException: scala.collection.mutable.WrappedArray$ofRef cannot be cast to java.util.ArrayList
at WindowTest$CustomMedian$$anonfun$1.apply(WindowTest.scala:176)
at WindowTest$CustomMedian$$anonfun$1.apply(WindowTest.scala:176)
at scala.collection.TraversableLike$$anonfun$map$1.apply(TraversableLike.scala:244)
at scala.collection.TraversableLike$$anonfun$map$1.apply(TraversableLike.scala:244)
at scala.collection.immutable.Map$Map4.foreach(Map.scala:181)
at scala.collection.TraversableLike$class.map(TraversableLike.scala:244)
at scala.collection.AbstractTraversable.map(Traversable.scala:105)
at WindowTest$CustomMedian.evaluate(WindowTest.scala:176)
at org.apache.spark.sql.execution.aggregate.ScalaUDAF.eval(udaf.scala:446)
at org.apache.spark.sql.execution.aggregate.AggregationIterator$$anonfun$35.apply(AggregationIterator.scala:376)
at …Run Code Online (Sandbox Code Playgroud) 这是我在运行应用程序时获得的stackTrace:
16/11/03 11:25:45 INFO CoarseGrainedSchedulerBackend$DriverEndpoint: Launching task 233 on executor id: 4 hostname: 10.178.149.243.
16/11/03 11:25:45 WARN TaskSetManager: Lost task 1.0 in stage 11.0 (TID 217, 10.178.149.243): java.util.NoSuchElementException: None.get
at scala.None$.get(Option.scala:347)
at scala.None$.get(Option.scala:345)
at org.apache.spark.storage.BlockInfoManager.releaseAllLocksForTask(BlockInfoManager.scala:343)
at org.apache.spark.storage.BlockManager.releaseAllLocksForTask(BlockManager.scala:644)
at org.apache.spark.executor.Executor$TaskRunner.run(Executor.scala:281)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:745)
16/11/03 11:25:45 INFO TaskSetManager: Lost task 14.0 in stage 11.0 (TID 225) on executor 10.178.149.243: java.util.NoSuchElementException (None.get) [duplicate 1]
16/11/03 11:25:45 INFO TaskSetManager: Starting task 14.1 in stage 11.0 (TID 234, 10.178.149.243, partition 14, NODE_LOCAL, …Run Code Online (Sandbox Code Playgroud) 我有一个用例,其中有三个文档,我想以事务方式更新它们,即如果其中任何一个失败,那么其他文档也不应该在数据库中更新.我正在寻找一个选项但在JavaSDK中找不到.那么我有什么方法可以在事务上执行此操作.我使用CAS值来处理并发.请给我一个同时处理此操作的方法.
Couchbase版本:4.0 Java SDK:2.1.6
任何帮助表示赞赏.
transactional distributed-transactions couchbase couchbase-java-api
嘿,我有一个案例,我试图在REPL上运行它:
(1 to 100).toList.reduce(_*_)
Run Code Online (Sandbox Code Playgroud)
它归还给我0.我不明白这种行为.如果Int溢出,它应该返回任何负数或正数.我好奇,因此我尝试了这个:
(1 to 100).toList.fold(1)(_*_)
Run Code Online (Sandbox Code Playgroud)
它仍然归还我0然后我尝试了这个:
(1 to 100).toList.fold(1)((a,b) => { println(s"dd::::$a:::$b"); a*b })
Run Code Online (Sandbox Code Playgroud)
它回报我:
scala> res0.toList.fold(1)((a,b) => { println(s"dd::::$a:::$b"); a*b })
dd::::1:::1
dd::::1:::2
dd::::2:::3
dd::::6:::4
dd::::24:::5
dd::::120:::6
dd::::720:::7
dd::::5040:::8
dd::::40320:::9
dd::::362880:::10
dd::::3628800:::11
dd::::39916800:::12
dd::::479001600:::13
dd::::1932053504:::14
dd::::1278945280:::15
dd::::2004310016:::16
dd::::2004189184:::17
dd::::-288522240:::18
dd::::-898433024:::19
dd::::109641728:::20
dd::::-2102132736:::21
dd::::-1195114496:::22
dd::::-522715136:::23
dd::::862453760:::24
dd::::-775946240:::25
dd::::2076180480:::26
dd::::-1853882368:::27
dd::::1484783616:::28
dd::::-1375731712:::29
dd::::-1241513984:::30
dd::::1409286144:::31
dd::::738197504:::32
dd::::-2147483648:::33
dd::::-2147483648:::34
dd::::0:::35
dd::::0:::36
dd::::0:::37
dd::::0:::38
dd::::0:::39
dd::::0:::40
dd::::0:::41
dd::::0:::42
dd::::0:::43
dd::::0:::44
dd::::0:::45
dd::::0:::46
dd::::0:::47
dd::::0:::48
dd::::0:::49
dd::::0:::50
dd::::0:::51
dd::::0:::52
dd::::0:::53
dd::::0:::54
dd::::0:::55 …Run Code Online (Sandbox Code Playgroud) scala ×6
apache-spark ×4
apache-kafka ×1
couchbase ×1
fold ×1
grafana ×1
hadoop-yarn ×1
java ×1
knitr ×1
r ×1
reduce ×1
rstudio ×1
split ×1
string ×1
user-input ×1