小编Rai*_*eld的帖子

Hive外连接:如何更改默认的NULL值

对于hive外连接,如果一个表中不存在连接键,hive则将放入NULL.可以使用另一个值吗?例如:

表格1:

user_id, name, age
1        Bob   23
2        Jim   43
Run Code Online (Sandbox Code Playgroud)

表2:

user_id,   txn_amt,      date
 1          20.00      2013-12-10
 1          10.00      2014-07-01
Run Code Online (Sandbox Code Playgroud)

如果我做一个LEFT OUTER JOINuser_id:

INSERT INTO TABLE user_txn
SELECT 
     Table1.user_id,
     Table1.name,
     Table2.txn_amt,
     Table2.date
FROM
    Table2
LEFT OUTER JOIN
Table1
ON
Table1.user_id = Table2.user_id;
Run Code Online (Sandbox Code Playgroud)

我想输出是这样的:

user_id,    name,   tnx_amt,   date
1           Bob     20.00      2013-12-10
1           Bob     10.00      2014-07-01
2           Jim     0.00       2099-12-31
Run Code Online (Sandbox Code Playgroud)

请注意Jim 的txn_amtdate列.有没有办法hive定义这样的默认值?

hadoop hive join

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

在zsh命令行中替换字符串

我使用zsh和emacs键绑定.有时我需要用不同的输入执行相同的命令.输入通常有共同的子串.是否有一种简单的方法可以用其他字符串替换以前命令的部分内容?例如,上一个命令是:

cat chr2.unknow.feature.filtered ../chr2.unknow.feature.filtered ../train/chr2.unknow.withpvalue.feature.filtered > chr2.combined.txt
Run Code Online (Sandbox Code Playgroud)

我怎么能用'chr3'轻松替换'chr2'?

问题的扩展,如何将命令中的几个不同的子串替换为其他不同的字符串:

cat chr1.unknow.feature.filtered ../chr2.unknow.feature.filtered ../train/chr3.unknow.withpvalue.feature.filtered
Run Code Online (Sandbox Code Playgroud)

如何用"chrX"代替"chr1",用"chrZ"替换'chr2','chr3'?

谢谢.

linux command-line zsh

8
推荐指数
2
解决办法
4519
查看次数

将特征矩阵映射到C数组

我最近开始使用Eigen库.我有一个将特征矩阵映射到C/C++数组的问题.默认情况下,特征矩阵是专业列.因此,如果我使用以下代码将矩阵映射到C/C++数组,

double a[10];
double *p = &a[0];
MatrixXd(2,5) m;
for (int i=0; i<2;i++)
    for (int j=0; j<5;j++)
        m(i,j) = i+j;
cout<<m<<endl;
Eigen::Map<MatrixXd>(p,2,5) = m;
for (int i=0; i<10; i++)
    cout<<a[i]<<" ";
cout<<endl;
Run Code Online (Sandbox Code Playgroud)

输出是:

0 1 2 3 4
1 2 3 4 5
0 1 1 2 2 3 3 4 4 5
Run Code Online (Sandbox Code Playgroud)

如果我将m的定义更改为行主要:

Matrix <double,2,5,RowMajor> m;
Run Code Online (Sandbox Code Playgroud)

我希望输出看起来像这样:

0 1 2 3 4
1 2 3 4 5
0 1 2 3 4 1 2 3 4 5 …
Run Code Online (Sandbox Code Playgroud)

c++ arrays matrix eigen

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

在Spark SQL中的一个查询中使用多个collect_list

我有以下数据帧data:

root
 |-- userId: string 
 |-- product: string 
 |-- rating: double
Run Code Online (Sandbox Code Playgroud)

以及以下查询:

val result = sqlContext.sql("select userId, collect_list(product), collect_list(rating) from data group by userId")
Run Code Online (Sandbox Code Playgroud)

我的问题是,不productrating在聚集阵列相互匹配?也就是说,同一行productrating来自同一行的聚合数组中是否具有相同的索引.

更新:从Spark 2.0.0开始,可以collect_list对struct类型执行,因此我们可以collect_list在组合列上执行一个.但是对于2.0.0之前的版本,人们只能使用collect_list原始类型.

hive scala apache-spark apache-spark-sql

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

加快Spark MLLib中大型数据集的协同过滤

我正在使用MLlib的矩阵分解来向用户推荐项目.我有一个很大的隐式交互矩阵,M = 2000万用户和N = 50k项目.在训练模型之后,我想获得每个用户的推荐列表(例如200).我尝试过recommendProductsForUsers,MatrixFactorizationModel但它非常慢(跑了9个小时,但距离完成还很远.我正在测试50个执行器,每个都有8g内存).这可能是预期的,因为recommendProductsForUsers需要计算所有M*N用户项目交互并获得每个用户的顶部.

我会尝试使用更多的执行程序,但是从我在Spark UI上的应用程序细节中看到的,我怀疑它可以在几小时或一天完成,即使我有1000个执行程序(9小时之后它仍然在flatmap这里https:// github. com/apache/spark/blob/master/mllib/src/main/scala/org/apache/spark/mllib/recommendation/MatrixFactorizationModel.scala#L279-L289,10000个总任务,只有~200个完成)还有其他的东西除了增加执行者数量之外,我可以调整以加快推荐过程吗?

这是示例代码:

val data = input.map(r => Rating(r.getString(0).toInt, r.getString(1).toInt, r.getLong(2))).cache
val rank = 20
val alpha = 40
val maxIter = 10
val lambda = 0.05
val checkpointIterval = 5
val als = new ALS()
    .setImplicitPrefs(true)
    .setCheckpointInterval(checkpointIterval)
    .setRank(rank)
    .setAlpha(alpha)
    .setIterations(maxIter)
    .setLambda(lambda)
val model = als.run(ratings)
val recommendations = model.recommendProductsForUsers(200)
recommendations.saveAsTextFile(outdir)
Run Code Online (Sandbox Code Playgroud)

scala collaborative-filtering apache-spark apache-spark-mllib

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

用于有效连接Spark数据帧/数据集的分区数据

我需要join基于一些共享键列来组合许多DataFrame.对于键值RDD,可以指定分区器,以便将具有相同键的数据点混洗到同一个执行器,因此加入更有效(如果在之前有一个shuffle相关操作join).可以在Spark DataFrames或DataSet上完成同样的事情吗?

partitioning apache-spark apache-spark-sql spark-dataframe apache-spark-dataset

6
推荐指数
2
解决办法
1万
查看次数

如果一列是另一列的成员,如何过滤Spark数据帧

我有一个包含两列的数据帧(一个字符串和一个字符串数组):

root
 |-- user: string (nullable = true)
 |-- users: array (nullable = true)
 |    |-- element: string (containsNull = true)
Run Code Online (Sandbox Code Playgroud)

如何才能筛选数据框,这样的结果数据框只包含行认为userusers

scala dataframe apache-spark apache-spark-sql

4
推荐指数
2
解决办法
3836
查看次数