我想编写一个map/reduce作业,根据行级条件从大型数据集中选择一些随机样本.我想最小化中间键的数量.
伪代码:
for each row
if row matches condition
put the row.id in the bucket if the bucket is not already large enough
Run Code Online (Sandbox Code Playgroud)
你做过这样的事吗?有没有众所周知的算法?
包含连续行的样本也足够好.
谢谢.
我遇到运行简单的Hbase示例的问题.
我在HbaseTest.java上创建了一个表,并插入了一些记录.在Unix中,我可以编译java类.通过.
$ javac -classpath hbase-0.94.2.jar:hadoop-core-1.0.4.jar HBaseTest.java
但我无法运行此程序:$ java -classpath hbase-0.94.2.jar:hadoop-core-1.0.4.jar HBaseTest
以上命令对我不起作用.不确定是什么问题?这是运行Hbase Java示例的正确方法吗?
如果我有一个十六进制的rowkey,比如x00\x01,我get在HBASE shell中怎么做?
hbase(main):004:0> scan 'tsdb-tree'
ROW COLUMN+CELL
\x00\x01 column=t:tree, timestamp=1379421652764, value={"name":"...
Run Code Online (Sandbox Code Playgroud) 我正在执行范围扫描,它给了我500k记录.如果我设置scan.setCaching(100000)它只需不到一秒钟,但如果scan.setCaching(100000)没有设置它需要将近38秒.
如果我设置scan.setBlockCache(false)和scan.setCaching(100000)会发生什么?这些行是否会被缓存?
我在第一次扫描后丢弃了操作系统缓存,但扫描记录的时间没有变化.为什么?
那我该如何检查读取性能呢?
我想在apache phoenix中导出现有表的模式.是否有一些命令或工具可以像show create table TABLE_NAME在mysql中那样做?
谢谢
我已经在Hbase中保存了我的已爬网数据,其文件系统是hdfs.然后我通过命令将我的数据(一个hbase表)从hdfs直接复制到一些本地目录
hadoop fs -CopyToLocal /hbase/input ~/Documents/output
Run Code Online (Sandbox Code Playgroud)
之后,我通过以下命令将该数据复制回另一个hbase(其他系统)
hadoop fs -CopyFromLocal ~/Documents/input /hbase/mydata
Run Code Online (Sandbox Code Playgroud)
它保存在hdfs中,当我list在hbase shell中使用命令时,它将其显示为另一个表即'mydata',但是当我运行scan命令时,它表示没有带有'mydata'名称的表.
上述程序有什么问题?简单来说:
我目前正在研究使用Spark Streaming来获取类似日志文件的条目,并出于统计原因对它们进行一些计算.
HDFS上有数据集,可以从HBase和Hive访问,这些数据集需要查找一些数据并对其进行转换,例如IP和机器名称与机器所有者之间的映射.
预计spark应用程序将在我们的集群中每天运行数周,而无需重启.但是,这些参考表每隔几小时更新一次.
如果使用的数据稍微过时,这是可以的,但数据不适合两周.因此,我想知道如何在地图中查找数据以进行转换和丰富,并减少阶段.我有几点想法.
广播变量可以读入数据集并有效地传递它.但是,一旦设置了广播变量,就无法更改它,并且在驱动程序类中再次获取数据,取消操作并广播新数据将不起作用,因为工作者指针都指向旧数据集.我不知道是否有办法解决这个问题.
可以进行HBase get()查询.如果基于查找的键将数据定向到reducer,则每个reducer可以保存整个数据集的子集的高速缓存,并且可以保持它们自己的本地高速缓存.HBase在获取单个记录时应具有最小的延迟.
别的什么?
我正在尝试将Dataframe写入Phoenix表,但我得到了例外.
这是我的代码:
df.write.format("org.apache.phoenix.spark").mode(SaveMode.Overwrite).options(collection.immutable.Map(
"zkUrl" -> "localhost:2181/hbase-unsecure",
"table" -> "TEST")).save();
Run Code Online (Sandbox Code Playgroud)
例外是:
org.apache.spark.SparkException: Job aborted due to stage failure: Task 0 in stage 3.0 failed 4 times, most recent failure:
Lost task 0.3 in stage 3.0 (TID 411, ip-xxxxx-xx-xxx.ap-southeast-1.compute.internal):
java.lang.RuntimeException: java.sql.SQLException: No suitable driver found for jdbc:phoenix:localhost:2181:/hbase-unsecure;
at org.apache.phoenix.mapreduce.PhoenixOutputFormat.getRecordWriter(PhoenixOutputFormat.java:58)
at org.apache.spark.rdd.PairRDDFunctions$anonfun$saveAsNewAPIHadoopDataset$1$anonfun$12.apply(PairRDDFunctions.scala:1030)
at org.apache.spark.rdd.PairRDDFunctions$anonfun$saveAsNewAPIHadoopDataset$1$anonfun$12.apply(PairRDDFunctions.scala:1014)
at org.apache.spark.scheduler.ResultTask.runTask(ResultTask.scala:66)
at org.apache.spark.scheduler.Task.run(Task.scala:88)
at org.apache.spark.executor.Executor$TaskRunner.run(Executor.scala:214)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
Run Code Online (Sandbox Code Playgroud)
我已经加入phoenix-spark和phoenix-core罐子到我的pom.xml
考虑到HBase将每个列族存储在单独的HFile中以及行可以跨越多个列族的事实.HBase如何确保跨越多个列族的行的放置/删除操作确实是原子的?
我是Saiku的新手.我想把saiku和凤凰融为一体.凤凰实习生与HBase联系.我创建了一个模式,当Saiku尝试加载phoenix schema xml时,Am触发了以下错误.我正在努力想弄明白.任何人都可以建议我错过了什么,做了什么.
我使用的是以下版本的s/ws:
Phoenix 4.4 HBase 1.1.2 Saiku 3.8
感谢您的支持.
请在下面找到异常跟踪:
java.lang.IllegalArgumentException: Unable to PTableType enum for value of 'MATERIALIZED VIEW'
at org.apache.phoenix.schema.PTableType.fromValue(PTableType.java:88)
at org.apache.phoenix.jdbc.PhoenixDatabaseMetaData.getTables(PhoenixDatabaseMetaData.java:1057)
at org.apache.commons.dbcp.DelegatingDatabaseMetaData.getTables(DelegatingDatabaseMetaData.java:604)
at mondrian.rolap.aggmatcher.JdbcSchema.loadTablesOfType(JdbcSchema.java:1205)
at mondrian.rolap.aggmatcher.JdbcSchema.loadTables(JdbcSchema.java:1162)
at mondrian.rolap.aggmatcher.JdbcSchema.load(JdbcSchema.java:1042)
at mondrian.rolap.RolapSchema$PhysSchema.<init>(RolapSchema.java:976)
at mondrian.rolap.RolapSchemaLoader.createSyntheticPhysicalSchema(RolapSchemaLoader.java:1479)
at mondrian.rolap.RolapSchemaLoader.validatePhysicalSchema(RolapSchemaLoader.java:684)
at mondrian.rolap.RolapSchemaLoader.loadStage2(RolapSchemaLoader.java:376)
at mondrian.rolap.RolapSchemaLoader.loadStage1(RolapSchemaLoader.java:336)
at mondrian.rolap.RolapSchemaLoader.loadStage0(RolapSchemaLoader.java:272)
at mondrian.rolap.RolapSchemaLoader.createSchema(RolapSchemaLoader.java:4304)
at mondrian.rolap.RolapSchemaPool.get(RolapSchemaPool.java:210)
at mondrian.rolap.RolapSchemaPool.get(RolapSchemaPool.java:62)
at mondrian.rolap.RolapConnection.<init>(RolapConnection.java:160)
at mondrian.rolap.RolapConnection.<init>(RolapConnection.java:84)
at mondrian.olap.DriverManager.getConnection(DriverManager.java:112)
at mondrian.olap.DriverManager.getConnection(DriverManager.java:68)
at mondrian.olap4j.MondrianOlap4jConnection.<init>(MondrianOlap4jConnection.java:153)
at mondrian.olap4j.FactoryJdbc4Plus$AbstractConnection.<init>(FactoryJdbc4Plus.java:323)
at mondrian.olap4j.FactoryJdbc41Impl$MondrianOlap4jConnectionJdbc41.<init>(FactoryJdbc41Impl.java:118)
at mondrian.olap4j.FactoryJdbc41Impl.newConnection(FactoryJdbc41Impl.java:32)
at mondrian.olap4j.MondrianOlap4jDriver.connect(MondrianOlap4jDriver.java:139)
at java.sql.DriverManager.getConnection(DriverManager.java:664)
at java.sql.DriverManager.getConnection(DriverManager.java:247)
at org.saiku.datasources.connection.SaikuOlapConnection.connect(SaikuOlapConnection.java:111)
at org.saiku.datasources.connection.SaikuOlapConnection.connect(SaikuOlapConnection.java:57)
at org.saiku.datasources.connection.SaikuConnectionFactory.getConnection(SaikuConnectionFactory.java:29) …Run Code Online (Sandbox Code Playgroud)