当我运行我的鲨鱼查询时,内存被囤积在主内存中这是我的最高命令结果.
Mem:74237344k总计,70080492k使用,4156852k免费,399544k缓冲交换:总计4194288k,使用480k,免费4193808k,缓存65965904k
即使我杀死/停止鲨鱼,火花,hadoop进程,这也不会改变.现在,清除缓存的唯一方法是重启机器.
以前有人遇到过这个问题吗?是火花/鲨鱼的一些配置问题还是已知问题?
我想听听您对使用CQL和内存查询引擎Spark/Shark的想法和经验.据我所知,CQL处理器在每个节点上的Cassandra JVM中运行.与Cassandra集群连接的Shark/Spark查询处理器在一个独立的集群中运行.此外,Datastax拥有Cassandra的DSE版本,允许部署Hadoop/Hive.问题是在哪个用例中我们会选择一个特定的解决方案而不是另一个.
我正在尝试计算Spark SQL上的Jaccard索引.我的表格中Hive包含以下数据:
hive> select * from test_1;
1 ["rock","pop"]
2 ["metal","rock"]
Run Code Online (Sandbox Code Playgroud)
表DDL:
create table test_1
(id int, val array<string>);
Run Code Online (Sandbox Code Playgroud)
我使用的是UDF来自Brickhouse.从spark-shell,我可以执行以下命令来创建临时函数.
val hiveContext = new org.apache.spark.sql.hive.HiveContext(sc)
hiveContext.hql("CREATE TEMPORARY FUNCTION jaccard_similarity AS 'brickhouse.udf.sketch.SetSimilarityUDF'")
Run Code Online (Sandbox Code Playgroud)
我还将.jar文件添加到CLASSPATHfor spark-shell(in compute-classpath.sh)中.
当我列出函数时,我能够看到我创建的新函数.
hiveContext.hql("show functions").collect().foreach(println)
Run Code Online (Sandbox Code Playgroud)
接下来,我使用该jaccard_similarity函数计算val数组的Jaccard Index .
hiveContext.hql("select jaccard_similarity(a.val, b.val) from test_1 a join test_1 b")
Run Code Online (Sandbox Code Playgroud)
我收到以下错误:
14/07/31 15:39:56 INFO ParseDriver: Parsing command: select jaccard_similarity(a.val, b.val) from test_1 a …Run Code Online (Sandbox Code Playgroud) 该条款的说明文件.我一直在一张桌子上运行一个表,其中包含多个记录,但它总是返回相同的记录.HIVELIMITreturns rows chosen at randomSELECT800,000LIMIT 1
我正在使用该Shark发行版,我想知道这是否与这种不期望的行为有关?任何想法将不胜感激.
谢谢,维萨克
根据此页面:https://spark.apache.org/sql/您可以通过ODBC或JDBC将现有BI工具连接到Spark SQL:

我不是指鲨鱼,因为这基本上是EOL:
正是出于这个原因,我们将Shark中的开发作为一个单独的项目结束,并将所有开发资源转移到Spark SQL,这是Spark中的一个新组件.
BI工具(如Tableau)如何通过ODBC连接到shark sql?
我正在构建用于检测欺诈ATM卡交易的实时处理.为了有效地检测欺诈,逻辑要求按卡分配最后交易日期,交易金额按天(或最后24小时)计算.
其中一个用例是,如果在该国家/地区之外的卡片交易超过该国家最后一次交易的30天,则会发送警报作为可能的欺诈行为
所以试着将Spark流视为一种解决方案.为了实现这一目标(可能我对功能编程缺乏了解),下面是我的psudo代码
stream=ssc.receiverStream() //input receiver
s1=stream.mapToPair() // creates key with card and transaction date as value
s2=stream.reduceByKey() // applies reduce operation for last transaction date
s2.checkpoint(new Duration(1000));
s2.persist();
Run Code Online (Sandbox Code Playgroud)
我这里面临两个问题
1)如何进一步使用这个最后的交易日期以便将来从同一张卡进行比较
2)如何保持数据所以即使重启驱动程序然后s2的旧值恢复回来3)updateStateByKey可以用来维持历史状态?
我想我错过了如何实现这种逻辑的火花流/函数编程的关键点.