关键词:
资源文件工具类把sql脚本转换为String字符串--->交给sql工具类ExecSQLUtil执行sql
1.资源文件工具类(ResourceUtil)
把sql脚本转换为String字符串
/** * 资源文件工具类 */ public class ResourceUtil /** * 以String方式读取整个资源串 */ public static String readResourceAsString(String resource ,String charset) throws Exception InputStream input = Thread.currentThread().getContextClassLoader().getResourceAsStream(resource) ; ByteArrayOutputStream baos = new ByteArrayOutputStream() ; byte[] buf = new byte[1024] ; int len = -1 ; while((len = input.read(buf)) != -1) baos.write(buf , 0 , len); return new String(baos.toByteArray() , charset) ; /** * 以String方式读取整个资源串 */ public static String readResourceAsString(String resource) throws Exception InputStream input = Thread.currentThread().getContextClassLoader().getResourceAsStream(resource) ; ByteArrayOutputStream baos = new ByteArrayOutputStream() ; byte[] buf = new byte[1024] ; int len = -1 ; while((len = input.read(buf)) != -1) baos.write(buf , 0 , len); String sql = new String(baos.toByteArray(), Charset.defaultCharset()) ; //替换掉注释 sql = sql.replaceAll("--.* ", "") ; return sql ; /** * 将资源文件读取出来,形成list */ public static List<String> readResourceAsList(String resource) throws Exception List<String> list = new ArrayList<String>() ; InputStream input = Thread.currentThread().getContextClassLoader().getResourceAsStream(resource); BufferedReader br = new BufferedReader(new InputStreamReader(input)) ; String line = null ; while((line = br.readLine()) != null) if(!line.trim().equals("")) list.add(line) ; return list ;
2.sql执行工具类(ExecSQLUtil)
执行sql
package com.oldboy.umeng.spark.stat; import com.oldboy.umeng.common.util.ResourceUtil; import org.apache.spark.sql.Dataset; import org.apache.spark.sql.Row; import org.apache.spark.sql.SparkSession; /** * 执行脚本工具类 */ public class ExecSQLUtil /** * 执行sql脚本 */ public static void execSQLScript(SparkSession sess, String sqlScript) throws Exception //资源工具类 把sql脚本转化为String String sqls = ResourceUtil.readResourceAsString(sqlScript); String arr[] = sqls.split(";"); for (String sql : arr) if (!sql.trim().equals("")) sess.sql(sql).show(1000, false); /** * 执行sqlsStr */ public static void execSQLString(SparkSession sess, String sqlString) throws Exception String arr[] = sqlString.split(";"); for (String sql : arr) if (!sql.trim().equals("")) sess.sql(sql).show(1000, false); /** * 执行sqlsStr */ public static Dataset<Row> execSQLString2(SparkSession sess, String sqlString) throws Exception String arr[] = sqlString.split(";"); for (int i = 0 ; i< arr.length ; i ++) if (!arr[i].trim().equals("")) if(i != arr.length - 1) sess.sql(arr[i]).show(); ; else return sess.sql(arr[i]) ; return null ; /** * 注册函数 */ public static void execRegisterFuncs(SparkSession sess) throws Exception execSQLScript(sess, "funcs.sql");
3.例如 清洗转储数据
/** * 清洗数据 */ public class DataCleanJava public static void main(String[] args) throws Exception String log_sql_script_name = "data_clean_startup.sql" ; if(args != null && args.length > 0) log_sql_script_name = args[0] ; SparkConf conf = new SparkConf(); conf.setAppName("dataClean") ; conf.setMaster("local[4]") ; SparkSession sess = SparkSession.builder().config(conf).enableHiveSupport( ).getOrCreate(); //先注册函数 ExecSQLUtil.execRegisterFuncs(sess); //执行sql ExecSQLUtil.execSQLScript(sess , "data_clean_error.sql");
SQL脚本
funcs.sql注册函数脚本
use big12_umeng ; drop function if exists forkstartuplogs ; drop function if exists forkeventlogs ; drop function if exists forkerrorlogs ; drop function if exists forkpagelogs ; drop function if exists forkusagelogs ; drop function if exists formatbyday ; drop function if exists formatbyweek ; drop function if exists formatbymonth ; create TEMPORARY function forkstartuplogs as ‘com.oldboy.umeng.hive.udtf.ForkStartuplogsUDTF‘ ; create TEMPORARY function forkeventlogs as ‘com.oldboy.umeng.hive.udtf.ForkEventlogsUDTF‘ ; create TEMPORARY function forkerrorlogs as ‘com.oldboy.umeng.hive.udtf.ForkErrorlogsUDTF‘ ; create TEMPORARY function forkpagelogs as ‘com.oldboy.umeng.hive.udtf.ForkPagelogsUDTF‘ ; create TEMPORARY function forkusagelogs as ‘com.oldboy.umeng.hive.udtf.ForkUsagelogsUDTF‘ ; create TEMPORARY function formatbyday as ‘com.oldboy.umeng.hive.udf.FormatByDayUDF‘ ; create TEMPORARY function formatbyweek as ‘com.oldboy.umeng.hive.udf.FormatByWeekUDF‘ ; create TEMPORARY function formatbymonth as ‘com.oldboy.umeng.hive.udf.FormatByMonthUDF‘ ;
javahutool(糊涂)工具类索引记录
前言有时候工具类太多,包括项目封装的,不知道用哪一个,在这里记录下目录,方便查找介绍Hutool是一个Java工具包,也只是一个工具包,它帮助我们简化每一行代码,减少每一个方法,让Java语言... 查看详情
androidapp打包流程
...成R.java文件,并为AndroidManifest.xml生成Manifest.java类。aidl把项目中自定义的aidl文件生成对应的java类。JavaCompiler把所有的Java源文件编译成class文件,包括:aapt生成的、aidl生成的、项目中自有的java源文件使用proguard混淆,并生成一... 查看详情
wpf添加resourcesdictionary资源一般类库项目中无法添加资源文件(resourcedictionary)
原文:WPF添加ResourcesDictionary资源一般类库项目中无法添加资源文件(ResourceDictionary)在文件夹或者项目右键->Add(添加),会弹出可以快捷添加的资源,但是你会发现没有ResourceDictionary资源可以选择。解决此问题方法:第一步:工... 查看详情
如何从多个项目访问公共资源文件
】如何从多个项目访问公共资源文件【英文标题】:Howtoaccesscommonresourcefilesfrommultipleprojects【发布时间】:2014-02-1410:28:28【问题描述】:在我的一个项目中,我将资源存储在/src/test/resources(典型的maven目录结构)中。存储在项目... 查看详情
jar 中的类路径资源
...jar【发布时间】:2010-12-2609:19:53【问题描述】:我有一个项目A,其中包含一些java文件和一个类路径资源R.txt。在项目中我使用ClassLoader.getSystemResource("R.txt");检索R.txt。然后我有一个项目B,其中包含项目A的jar文件。现在getSystemReso... 查看详情
02.友盟项目--原始日志数据生成(代码片段)
友盟架构图1 友盟架构图2 日志生成类 packagecom.star.umeng.phone.domain;/***App日志的公共属性*/publicclassAppBaseLogprivateLongcreatedAtMs;//日志创建时间privateStringappId;//应用唯一标识privateStringtenantId; 查看详情
如何打开也是项目资源的 PDF 文件?
】如何打开也是项目资源的PDF文件?【英文标题】:HowtoopenaPDFfilethatisalsoaprojectresource?【发布时间】:2012-01-2610:12:15【问题描述】:我有一个PDF文件作为资源导入到我的项目中。该文件是一个帮助文档,因此我希望能够将它包含... 查看详情
qt入门教程项目篇rcc资源编译(代码片段)
RCC介绍rcc工具是将qrc文件转化,可以将qrc中所有的图片、文档等资源以二进制的形式存储到rcc文件中,且不受平台的限制。RCC使用1.进入D:\\Qt\\5.15.2\\mingw81_64\\bin目录2.执行rcc指令rcc-binaryresource.qrc-oQtLoadRcc.rcc3.初始化的时候... 查看详情
使用ant构建简单项目
ApacheAnt主要用于Java项目的构建。为什么要使用Ant: 1)项目构建不是简单的编译,各种资源需要合理构建,例如有的类需要压缩成jar文件,有的文件需要放在指定位置,有时候需要使用配置文件。这些工作是繁杂琐... 查看详情
以编程方式添加 ODR 资源
...题描述】:我正在将文件列表作为ODR资源添加到我的Xcode项目中。当我创建新文件时,我必须再次将它们添加为带有ODR资源标签的ODR资源。我非常频繁地获取新文件,我一次又一次地添加它。有没有办法自动添加ODR资源?【问题... 查看详情
如何将新的占位符资源放入 Android Studio 项目(“工具:示例”资源)?
】如何将新的占位符资源放入AndroidStudio项目(“工具:示例”资源)?【英文标题】:HowtoputnewplaceholderresourcesintoAndroidStudioproject("tools:sample"resources)?【发布时间】:2018-02-2120:53:07【问题描述】:背景有时,您希望将一些... 查看详情
egret的config加载类,支持多个文件加载
ResUtils.ts/***Createdbyyangsongon15-2-11.*资源加载工具类,*支持多个resource.json文件加载*/classResUtils{privatestaticinstance:ResUtils;private_configs:Array<any>;private_onConfigComplete:Function;private_onCon 查看详情
java学习-加载.properties工具类(代码片段)
javaWeb项目,要加载xxx.properties或其它如.txt,.md后缀的文本文件文本内容有两种格式key:value或者key=value诸如Spring框架,Jfinal框架,都是使用java.util.Properties类来加载文本配置文件Poperties类是按行读取key和value,所以我们写配置文件时... 查看详情
十次方项目的环境搭建
参考技术A一:搭建父子工程maven项目,父项目只需pom文件中导入web、lombok依赖;二:公共项目tensquare_common继承父项目,实体类里面需要有返回信息类、分页结果类、返回码定义类,工具类里面需要有开源的twitter雪花算法(idWorker)... 查看详情
如何选择合适的小型项目管理工具?
小型项目通常是指工作量在三人至十几人之间的项目,这类项目一般是放任自流,少有管理,通常具有投资少、人员少、时间紧、需求不明确等特点。如借助小型项目管理工具,可以节省大量时间和避免资源浪费,提高项目效率... 查看详情
将资源文件夹目录从目标类更改为 Java 中的源
】将资源文件夹目录从目标类更改为Java中的源【英文标题】:ChangingresourcefolderdirectoryfromTargetclassestosourceinJava【发布时间】:2018-12-2816:15:32【问题描述】:我正在尝试在我的JavaWeb应用程序中从src/main/resources读取属性文件。问题... 查看详情
spring常用工具类
Spring框架下自带了丰富的工具类,在我们开发时可以简化很多工作:1.Resource访问文件资源:具体有:ResourceUtils.getFile(url);FileSystemResource();ClassPathResource();ServletContextResource(application,url);2.文件操作FileCopyUtils具体有:FileCopyUtils. 查看详情
androidkiller是啥软件
...,语法高亮,基于关键字(支持单行代码或多行代码段)项目内搜索,可自定义外部工具;吸收融汇多种工具功能与特点,打造一站式逆向工具操作体验,大大简化了用户在安卓应用/游戏修改过程中的各类繁琐工作。主要功能... 查看详情