「java获取odps」Java获取文件大小

博主:adminadmin 2023-03-20 21:38:10 397

今天给各位分享java获取odps的知识,其中也会对Java获取文件大小进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

本文目录一览:

怎样eclipse maven管理的odps

准备工作:

登录阿里云官网,开通odps服务。创建一个odps的project。

安装odps的客户端,具体的方法见 传送门

下载Eclipse并解压缩。建议到官网上下载。作为一个java开发,大家应该是很熟练的。

下载odps的Eclipse插件(把rar文件解压成jar文件)并拷贝到Eclipse解压文件里的plugins文件夹里

准备工作就绪后,开工啦~

打开Eclipse,如果之前jar包拷贝好了,点击圈圈里的地方,会出现如图的框。有看到里面odps的图标,就表示jar包拷贝成功了

java中jstl标签使用问题求助

提示是找不到声明的文件啊

taglib-location/WEB-INF/fn.tld/taglib-location 这里的/WEB-INF/fn.tld没有写错吧? 或者有没有fn.tld这个文件?提示这个tld文件有问题啊,问题很有可能出在这。

总结一下有几点可能:

1.fn.tld中tagclass有没有配好或者路径有没有弄错。

2.web.xml中taglib-location有没有配错tld文件,路径也看看。

3.配完了web.xml重启一下容器!

你再认真找找吧!

odps create download session failed怎么解决

解决方案(以下涉及代码讲解):

该语句表示传入了错误的参数导致误判为重载,实际检查后,如果确实是参数个数不对或写法有问题,那么多线程下载将‘表’下载到一个目录的多个文件中去,建议单线程下载将表下载到一个目录的一个文件中去。

资料延伸:

odps-jdbc 是 ODPS 官方提供的 JDBC 驱动,它向 Java 程序提供了一套执行 SQL 任务的接口。当年 Java 红遍大江南北靠的就是一句“编写一次,处处运行”,JDBC 也是这种思潮下产物。

目前 hive-jdbc 支持的功能 odps-jdbc 都能够支持,hive-jdbc 不支持的一些功能,例如滚动游标的 ResultSet,也支持了。 我们的目标是使 ODPS 更加开放、灵活和易用。项目托管在 github。欢迎各位开源热心人士积极反馈,贡献代码。

感谢采纳!

神经网络算法的必要性

这里的distinct表示去重,也可以用group by实现, 两者的区别在于distinct会读取所有的记录,而group by是在分组之后每组只返回一条记录,也就是说后者读取的条数要少很多,效率会更高一些,因此可以将上述代码改为:

create table validate_set as

select

user_id,

wm_concat(',',brand_id) as brand

from(

select user_id,brand_id

from t_alibaba_bigdata_user_brand_total_1

where type = '1' and visit_datetime '07-15'

group by user_id,brand_id

)a

group by user_id;

训练集和测试集建立好之后,我们可以通过以下命令来计算测试集的推荐数目:

select sum(regexp_count(brand,',')+1) from t_tmall_add_user_brand_predict_dh;

其中REGEXP_COUNT是ODPS的一个自建函数,它的用法如下:

bigint regexp_count(string source, string pattern[, bigint start_position])

表示计算 source 中从 start_position 开始,匹配指定模式pattern 的子串的次数。比如我们有一条输出结果是:100 1,2,3,4,通过计算其中的,数(3)+1=4就计算出推荐的个数了。

UDF计算重复条数

UDF(User-Defined Function)(用户定义函数),是用户根据实际应用的需要而自行开发的函数。在 Eclipse 中的项目下新建 UDF。填入 Package 名称为:chanvee.udf,和 UDF 类名:CountHits,点击确认。插件会自动帮我们生成chanvee.udf包用于写 UDF 代码,和test.chanvee.udf包用于本地测试。

编辑CountHits.java文件,注意下文的Long不能替换为long类型,否则在ODPS上运行会报Method Not Found错误:

package chanvee.udf

import java.util.Arrays;

import java.util.HashSet;

import java.util.Set;

public class CountHits extends UDF {

public Long evaluate (String a,String b){

if(a == null || b == null) {

return 0L; //异常值

}

SetString set1 = new HashSetString();

SetString set2 = new HashSetString();

set1.addAll(Arrays.asList(a.split(",")));

set2.addAll(Arrays.asList(b.split(",")));

Long hits = 0L;

for(String s : set2){

if( set1.contains(s) )

hits++;

}

return hits;

}

}

本段函数的主要工作是在a串和b串去重后,计算它们中重复元素的个数。接下来在本地测试下 UDF 。在test.jark.udf包中有两个文件TestCountHits.java和TestUDFBase.java。由于如果 UDF 的输入参数是多个的话,本地测试默认的分隔符是逗号,与我们brand中的逗号冲突了。所以修改下TestUDFBase.java文件的第15行的分隔符为空格(当然也可以其他符号):

private final static String ODPS_SEPARATOR = " ";

同时修改第72行,去掉(String),原因是Long型不能强制转换成String:

return callMeth.invoke(UDFClass, input_parameter.toArray()) + "\n";

在TestCountHits.in文件中输入测试样例:

123456,444,555,666 123456,666,777,888

888,999 111,222

111,111,222,222 111,222,222,333

运行TestCountHits.java后,在TestCountHits.out文件中得到测试结果(样例):

2

2

在确认 UDF 没有问题后,准备上传。将Package chanvee.udf打成 jar 包,命名为chanvee_udf.jar,置于C:/TOOLS下,执行以下命令:

create resource jar C:/TOOLS/chanvee_udf.jar

create function count_hits chanvee.udf.CountHits jark-udf.jar

上述命令作用分别是将用户 jar 包上传到 ODPS 和在 ODPS 上注册函数并命名为count_hits。现在使用ls functions命令就能看到我们刚刚注册的函数了。

现在,我们就能像调用一般内建函数一样调用我们自己的count_hits函数了。计算推荐集和验证集中的重复条数,有下面代码:

select sum(count_hits(a.brand,b.brand)) hits from t_tmall_add_user_brand_predict_dh a

join validate_set b on a.user_id = b.user_id;

上面演示了一般 UDF 的创建使用过程,其他类似的 UDF 都可以参考以上过程构建。UDF 是 SQL 的一大工具 ,很多规则算法都可以用过 UDF 方便地实现。

计算评估值

我们知道准确率的计算公式:precision=hitspnums, 其中 pnum 代表推荐的条数。

召回率的计算公式:recall=hitsrnums, 其中 rnum 为验证的条数。

F1:

F1=2∗hitspnum+rnum

为了计算方便,我们用full outer join连接验证集和推荐集,并将计算出的 hits、pnums、rnums 放到临时表里:

select sum(count_hits(p.brand,r.brand) hits,

sum(regexp_count(p.brand,',')+1) pnums,

sum(regexp_count(r.brand,',')+1) rnums

from t_tmall_add_user_brand_predict_dh p

full outer join validate_set r on p.user_id = r.user_id

有了这三个值后,就可以用上面的公式轻松计算出评测值了。

select (hits/pnums) precision, (hits/rnums) recall,(2*hits/(pnums+rnums)) F1

from (

select hits , pnums , rnums

from ...

)a;

综合一下,有如下代码:

create table evaluation as

select (hits/pnums) precision , (hits/rnums) recall , (2*hits/(pnums+rnums)) F1 ,

hits , pnums , rnums , getdate() eval_time

from (

select sum(count_hits(p.brand,v.brand) hits,

sum(regexp_count(p.brand,',')+1) pnums,

sum(regexp_count(v.brand,',')+1) rnums

from t_tmall_add_user_brand_predict_dh p

full outer join validate_set r on p.user_id = r.user_id

)a;

我们将评测值写到了evaluation表中,可供组员查看分析。运行一次上面代码后,若以后再进行评测,可以将第一行改成insert into/overwrite table evaluation后直接运行,这样可以与上次的结果进行比较。

现在已有的模型算法就可以在本地测试调优后,再上传到线上进行评估了。

使用java调用shell和直接运行shell的区别

对于第一个问题:java抓取,并且把结果打包。那么比较直接的做法就是,java接收各种消息(db,metaq等等),然后借助于jstorm集群进行调度和抓取。 最后把抓取的结果保存到一个文件中,并且通过调用shell打包, 回传。 也许有同学会问, 为什么不直接把java调用odps直接保存文件,答案是,我们的集群不是hz集群,直接上传odps速度很有问题,因此先打包比较合适

关于java获取odps和Java获取文件大小的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。