我开发了一个RShiny应用程序,我想与我的同事在内部共享(在服务器上托管应用程序,在这个阶段不是一个选项).
我正在探索各种选项,我遇到了一种技术,可以将您的应用程序捆绑为一个独立的桌面应用程序,并附带一个安装程序文件,然后您可以共享和分发该文件.(这里和这里解释了这种方法)这非常简洁,因为安装它的用户不需要安装和运行应用程序的R(以及任何其他必需的软件包)(它有R的便携版本,chrome等)
我能够按照这种方法创建一个独立的桌面应用程序,带有一个安装程序文件,我现在可以开始共享了.
但是,这是我的担忧:理想情况下,我不希望我的用户能够访问源代码.有没有办法限制这种访问?在教程(我发布的第一个链接)中,这是作者所说的:
*
最后,请记住,您的源代码很容易访问.如果这是您关注的问题(例如,如果您要分发给不应该访问代码的客户端),您可以做的最好的事情是首先将敏感源代码编译为二进制包,从而阻碍访问.也就是说,任何知道R(并且具有足够意图)的用户都可以简单地将代码转储到控制台.
*
是否有更好,更简单的方法来阻止访问?
谢谢!
我在Windows机器上本地运行Spark.我能够成功启动火花壳,并在文本文件中读取RDD.我还能够关注这个主题的各种在线教程,并能够在RDD上执行各种操作.
但是,当我尝试将RDD转换为DataFrame时,我收到错误.这就是我在做的事情:
val sqlContext = new org.apache.spark.sql.SQLContext(sc)
import sqlContext.implicits._
//convert rdd to df
val df = rddFile.toDF()
Run Code Online (Sandbox Code Playgroud)
此代码生成一系列错误消息,这些消息似乎与以下内容相关:
Caused by: java.lang.IllegalArgumentException: java.net.URISyntaxException: Relative path in absolute URI: file:C:/Users/spark/spark-warehouse
at org.apache.hadoop.fs.Path.initialize(Path.java:205)
at org.apache.hadoop.fs.Path.<init>(Path.java:171)
at org.apache.hadoop.hive.metastore.Warehouse.getWhRoot(Warehouse.java:159)
at org.apache.hadoop.hive.metastore.Warehouse.getDefaultDatabasePath(Warehouse.java:177)
at org.apache.hadoop.hive.metastore.HiveMetaStore$HMSHandler.createDefaultDB_core(HiveMetaStore.java:600)
at org.apache.hadoop.hive.metastore.HiveMetaStore$HMSHandler.createDefaultDB(HiveMetaStore.java:620)
at org.apache.hadoop.hive.metastore.HiveMetaStore$HMSHandler.init(HiveMetaStore.java:461)
at org.apache.hadoop.hive.metastore.RetryingHMSHandler.<init>(RetryingHMSHandler.java:66)
at org.apache.hadoop.hive.metastore.RetryingHMSHandler.getProxy(RetryingHMSHandler.java:72)
at org.apache.hadoop.hive.metastore.HiveMetaStore.newRetryingHMSHandler(HiveMetaStore.java:5762)
at org.apache.hadoop.hive.metastore.HiveMetaStoreClient.<init>(HiveMetaStoreClient.java:199)
at org.apache.hadoop.hive.ql.metadata.SessionHiveMetaStoreClient.<init>(SessionHiveMetaStoreClient.java:74)
... 85 more
Caused by: java.net.URISyntaxException: Relative path in absolute URI: file:C:/Users/spark/spark-warehouse
at java.net.URI.checkPath(URI.java:1823)
at java.net.URI.<init>(URI.java:745)
at org.apache.hadoop.fs.Path.initialize(Path.java:202)
... 96 more
Run Code Online (Sandbox Code Playgroud)
整个堆栈跟踪如下.
16/08/16 12:36:20 WARN ObjectStore: Failed to …Run Code Online (Sandbox Code Playgroud) 我有一个带有一些缺失值的Spark Dataframe.我想通过用该列的平均值替换缺失值来执行简单的估算.我对Spark很新,所以我一直在努力实现这个逻辑.这是我到目前为止所做的事情:
a)要为单个列(比如Col A)执行此操作,这行代码似乎有效:
df.withColumn("new_Col", when($"ColA".isNull, df.select(mean("ColA"))
.first()(0).asInstanceOf[Double])
.otherwise($"ColA"))
Run Code Online (Sandbox Code Playgroud)
b)但是,我无法弄清楚,如何对我的数据帧中的所有列执行此操作.我正在尝试Map函数,但我相信它遍历数据帧的每一行
c)SO上有类似的问题 - 这里.虽然我喜欢这个解决方案(使用聚合表和合并),但我非常想知道是否有办法通过遍历每一列来实现这一点(我来自R,所以使用更高阶函数循环遍历每一列lapply对我来说似乎更自然).
谢谢!
我有一个包含2列的数据集 - 每列包含一组文档.我必须将Col A中的文档与Col B中提供的文档相匹配.这是一个受监督的分类问题.所以我的训练数据包含一个标签栏,表明文件是否匹配.
为了解决这个问题,我创建了一组功能,例如f1-f25(通过比较2个文档),然后在这些功能上训练了二元分类器.这种方法运行得相当好,但现在我想评估这个问题的深度学习模型(特别是LSTM模型).
我keras在Python中使用该库.在浏览了keras文档和在线提供的其他教程后,我成功完成了以下操作:
from keras.layers import Input, Embedding, LSTM, Dense
from keras.models import Model
# Each document contains a series of 200 words
# The necessary text pre-processing steps have been completed to transform
each doc to a fixed length seq
main_input1 = Input(shape=(200,), dtype='int32', name='main_input1')
main_input2 = Input(shape=(200,), dtype='int32', name='main_input2')
# Next I add a word embedding layer (embed_matrix is separately created
for each word in my vocabulary by reading from a pre-trained …Run Code Online (Sandbox Code Playgroud)