<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[甘焕的博客]]></title><description><![CDATA[专注于大数据及可视化研究]]></description><link>https://blog.youkuaiyun.com/yiifaa</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; yiifaa]]></copyright><item><title><![CDATA[你可能忘记了双引号]]></title><link>https://blog.youkuaiyun.com/yiifaa/article/details/105076469</link><guid>https://blog.youkuaiyun.com/yiifaa/article/details/105076469</guid><author>yiifaa</author><pubDate>Tue, 24 Mar 2020 17:23:41 +0800</pubDate><description><![CDATA[需要定时导出hive表，有如下脚本：
#!/bin/bash
HQL="select * from test where concat(year, month, day) = '20200321'"
hive -e $HQL &gt; result.txt

执行时提示如下错误：
FAILED: ParseException line 1:6 cannot recognize input near...]]></description><category></category></item><item><title><![CDATA[HIVE出现“ java.lang.UnsupportedOperationException”的解决办法]]></title><link>https://blog.youkuaiyun.com/yiifaa/article/details/105075388</link><guid>https://blog.youkuaiyun.com/yiifaa/article/details/105075388</guid><author>yiifaa</author><pubDate>Tue, 24 Mar 2020 17:10:30 +0800</pubDate><description><![CDATA[在HIVE中执行如下语句：
select * from test where concat(year, month, day, hour) = '2020032412' limit 5;

提示如下错误：
Failed with exception java.io.IOException:org.apache.hadoop.hive.ql.metadata.HiveException: java....]]></description><category></category></item><item><title><![CDATA[SBT启动失败的解决办法]]></title><link>https://blog.youkuaiyun.com/yiifaa/article/details/89447115</link><guid>https://blog.youkuaiyun.com/yiifaa/article/details/89447115</guid><author>yiifaa</author><pubDate>Mon, 22 Apr 2019 10:36:41 +0800</pubDate><description><![CDATA[在利用Scala创建Spark项目时，提示如下错误：
sbt.librarymanagement.ResolveException: 
    unresolved dependency: com.artima.supersafe#sbtplugin;1.1.3: 
    sbt-plugin-releases: unable to get resource for com.artima.sup...]]></description><category></category></item><item><title><![CDATA[Scala容器与Java容器的互相转换]]></title><link>https://blog.youkuaiyun.com/yiifaa/article/details/89447084</link><guid>https://blog.youkuaiyun.com/yiifaa/article/details/89447084</guid><author>yiifaa</author><pubDate>Mon, 22 Apr 2019 10:35:31 +0800</pubDate><description><![CDATA[从scala 2.12版本开始，Scala官方废除了“scala.collection.JavaConversions”，改用“scala.collection.JavaConverters”。如果继续强行使用，则会提示如下错误：
java.lang.NoSuchMethodError:
scala.collection.JavaConversions$.deprecated$u002
0prop...]]></description><category></category></item><item><title><![CDATA[Scala中JSON的读入与写出]]></title><link>https://blog.youkuaiyun.com/yiifaa/article/details/89447038</link><guid>https://blog.youkuaiyun.com/yiifaa/article/details/89447038</guid><author>yiifaa</author><pubDate>Mon, 22 Apr 2019 10:33:48 +0800</pubDate><description><![CDATA[在JAVA中，习惯了JacksonObjectMapper的方便与简洁，那Scala中是否有同样类似的ObjectMapper呢？答案是真有，并且是专有，名称是jackson-module-scala。
1. 添加依赖
理所当然的SBT。
name := "scala-datas"

version := "0.1"

scalaVersion := "2.12.8"

libraryDepend...]]></description><category></category></item><item><title><![CDATA[Javascript：巧用n进制做加密与解密]]></title><link>https://blog.youkuaiyun.com/yiifaa/article/details/84302692</link><guid>https://blog.youkuaiyun.com/yiifaa/article/details/84302692</guid><author>yiifaa</author><pubDate>Tue, 20 Nov 2018 14:52:48 +0800</pubDate><description><![CDATA[对于安全型较低的应用，不妨试试Javascript的n进制转换，能达到简单的对称加密效果。
1. 加密
对于数字，转换为Number进行toString操作即可，toString接受一个进制转换的参数，取值范围为1~36，如下：
var x = 640520;
//  将x转换为32进制
var secret = Number(x).toString(32);

得到的结果是“jhg8”，是不是有...]]></description><category></category></item><item><title><![CDATA[程序员生活杂记四：脱发]]></title><link>https://blog.youkuaiyun.com/yiifaa/article/details/82790842</link><guid>https://blog.youkuaiyun.com/yiifaa/article/details/82790842</guid><author>yiifaa</author><pubDate>Thu, 20 Sep 2018 17:23:33 +0800</pubDate><description><![CDATA[领导问：“你头发怎么这么少了？”
答：“项目赶得太急，我跑得太快，头发没追上！”
测试经理：“你头发怎么这么少了？”
答：“因为我不想让别人抓到我代码的小辫子！”
女朋友问：“你头发怎么这么少了？”
答：“因为头发觉得我太偏心了，只爱代码不爱他！”
老婆：“你头发怎么这么少了？”
答：“为了省点洗发水，凑钱给你买包呗！”
儿子：“爸爸，你头发怎么这么少了？”
答：“只有头发少了，才能灵光一闪！”
...]]></description><category></category></item><item><title><![CDATA[HIVE：hivevar、hiveconf与define参数的差异与用法]]></title><link>https://blog.youkuaiyun.com/yiifaa/article/details/82788851</link><guid>https://blog.youkuaiyun.com/yiifaa/article/details/82788851</guid><author>yiifaa</author><pubDate>Thu, 20 Sep 2018 15:58:11 +0800</pubDate><description><![CDATA[HIVE CLI中有三种定义属性或变量的参数，分别是：
文章目录1. hiveconf2. hivevar3. define
1. hiveconf
hiveconf用于定义HIVE执行上下文的属性(配置参数)，可覆盖覆盖hive-site.xml（hive-default.xml）中的参数值，如用户执行目录、日志打印级别、执行队列等，常用的配置属性如下：




参数名称
参数解释




hi...]]></description><category></category></item><item><title><![CDATA[Presto “Column 'xxx' cannot be resolved”的解决办法]]></title><link>https://blog.youkuaiyun.com/yiifaa/article/details/82788810</link><guid>https://blog.youkuaiyun.com/yiifaa/article/details/82788810</guid><author>yiifaa</author><pubDate>Thu, 20 Sep 2018 15:56:49 +0800</pubDate><description><![CDATA[在使用Presto的过程中，提示如下错误：
Query 20180912_035603_00940_xc5ft failed: line 1:75: Column 'xxx' cannot be resolved
LINE 1: select system, concat(year, month, day, hour) from mytable where &quot;value&quot;=&quot;xxx&quot;

更奇怪的是...]]></description><category></category></item><item><title><![CDATA[Presto与Spark SQL查询性能比较]]></title><link>https://blog.youkuaiyun.com/yiifaa/article/details/82788727</link><guid>https://blog.youkuaiyun.com/yiifaa/article/details/82788727</guid><author>yiifaa</author><pubDate>Thu, 20 Sep 2018 15:53:41 +0800</pubDate><description><![CDATA[1. 数仓环境




指标名称
指标值




数据总量
24T


分区数量
24


存储类型
Text


Spark SQL版本



Pres同版本



2. 分页查询
所有的计算时间都以秒为单位，执行的SQL语句如下：
select * from mydb where year='2018' and month='09' and day='09' and remote_addr='...]]></description><category></category></item><item><title><![CDATA[Spark-SQL导出查询结果的两种方式]]></title><link>https://blog.youkuaiyun.com/yiifaa/article/details/82465767</link><guid>https://blog.youkuaiyun.com/yiifaa/article/details/82465767</guid><author>yiifaa</author><pubDate>Thu, 06 Sep 2018 18:07:49 +0800</pubDate><description><![CDATA[为了分析数据的需要，我们需要导出Spark-SQL的查询结果，通过Spark SQL CLI有两种方式。



1. 使用“-e”参数

与“Hive”一样，Spark SQL CLI也支持“-e”参数，使用方式如下：



# 分成多行是为了便于阅读
# 执行时请去掉多余的回车
spark-sql --num-executors 100 
          -e &amp;quot;select * from ...]]></description><category></category></item><item><title><![CDATA[HttpClient提交表单出现中文乱码的解决办法]]></title><link>https://blog.youkuaiyun.com/yiifaa/article/details/82465680</link><guid>https://blog.youkuaiyun.com/yiifaa/article/details/82465680</guid><author>yiifaa</author><pubDate>Thu, 06 Sep 2018 18:01:42 +0800</pubDate><description><![CDATA[有个项目需要为图片添加水印，本来运行得很好，但后来增加了自定义水印内容的需求，且需要支持中文，于是很简单地添加了表单描述字段“remark”，但后端解析到的字符为一连串“?”（难道水印也是满脸的懵逼？），代码如下：



HttpEntity reqEntity = MultipartEntityBuilder.create();
HttpEntity reqEntity = MultipartE...]]></description><category></category></item><item><title><![CDATA[一种快速切割字符串的方法]]></title><link>https://blog.youkuaiyun.com/yiifaa/article/details/82465644</link><guid>https://blog.youkuaiyun.com/yiifaa/article/details/82465644</guid><author>yiifaa</author><pubDate>Thu, 06 Sep 2018 17:59:51 +0800</pubDate><description><![CDATA[在项目中，经常需要对字符串进行切割转换，以日期字符串“2018121810”为例，惯性的思维是利用DateFormat函数，如下：



val srcDf:Sdf = new Sdf(&amp;quot;yyyyMMddHH&amp;quot;)
val time: Date = srcDf.parse(&amp;quot;2018080810&amp;quot;)
val toDf: Sdf = new Sdf(&amp;quot;yyyy/MM/dd/HH&amp;quot;)
val outpu..]]></description><category></category></item><item><title><![CDATA[Spark：flatmap函数提示“ambiguous implicit values”的解决办法]]></title><link>https://blog.youkuaiyun.com/yiifaa/article/details/82465575</link><guid>https://blog.youkuaiyun.com/yiifaa/article/details/82465575</guid><author>yiifaa</author><pubDate>Thu, 06 Sep 2018 17:56:00 +0800</pubDate><description><![CDATA[很简单的Spark Rdd操作，提示如下错误：



Error:(46, 15) ambiguous implicit values:
 both method newIntEncoder in class SQLImplicits of type =&amp;gt; org.apache.spark.sql.Encoder[Int]
 and method newLongEncoder in clas...]]></description><category></category></item><item><title><![CDATA[Scala守卫语句的两种用法]]></title><link>https://blog.youkuaiyun.com/yiifaa/article/details/82356176</link><guid>https://blog.youkuaiyun.com/yiifaa/article/details/82356176</guid><author>yiifaa</author><pubDate>Mon, 03 Sep 2018 22:37:17 +0800</pubDate><description><![CDATA[相比于JAVA，Scala的if增加了两项强大的功能，一是可以直接作为赋值语句，另一种功能是作为守卫语句，不仅远远超过JAVA，甚至也将PYTHON抛在身后。



1. if作为赋值语句

作为赋值语句，不仅仅只是替代了三元运算符，而且还能支持逻辑语句块，如下：



val (a, b) = (10, 20)
//  更添加更多逻辑控制，且支持语句块
val value = if(a &amp;gt;...]]></description><category></category></item><item><title><![CDATA[R语言：因子与字符串的互转]]></title><link>https://blog.youkuaiyun.com/yiifaa/article/details/82318459</link><guid>https://blog.youkuaiyun.com/yiifaa/article/details/82318459</guid><author>yiifaa</author><pubDate>Sun, 02 Sep 2018 19:55:45 +0800</pubDate><description><![CDATA[在导入大批量数据时，如果没有显式地指定“stringsAsFactors = FALSE”，默认会将所有的字符串转换为因子，导致数据处理速度较慢。

示例数据如下：



name,math,english,sex,year
&amp;quot;yiifaa&amp;quot;,65,68,&amp;quot;M&amp;quot;,2018
&amp;quot;yiifee&amp;quot;,95,98,&amp;quot;F&amp;quot;,2018
&amp;quot;guagua&amp;qu]]></description><category></category></item><item><title><![CDATA[R语言：“cannot open the connection”的解决办法]]></title><link>https://blog.youkuaiyun.com/yiifaa/article/details/82317632</link><guid>https://blog.youkuaiyun.com/yiifaa/article/details/82317632</guid><author>yiifaa</author><pubDate>Sun, 02 Sep 2018 18:11:15 +0800</pubDate><description><![CDATA[在R语言的实践中，读入数据文件几乎是必须的操作，但没有设置好工作空间的位置，将会提示如下错误：



Error in file(file, &amp;quot;rt&amp;quot;) : cannot open the connection
In addition: Warning message:
In file(file, &amp;quot;rt&amp;quot;) :
  cannot open file 'Salary.csv': No such f...]]></description><category></category></item><item><title><![CDATA[Scala型变：不变、协变及逆变]]></title><link>https://blog.youkuaiyun.com/yiifaa/article/details/82258790</link><guid>https://blog.youkuaiyun.com/yiifaa/article/details/82258790</guid><author>yiifaa</author><pubDate>Fri, 31 Aug 2018 16:46:31 +0800</pubDate><description><![CDATA[Scala在高阶类型的使用中，有三种变化，分别是顺变、协变及逆变，下面详细讲讲它们的含义与应用。



1. 高阶类型

高阶类型是接受其他参数用来构造新类型的，所以又称为“类型构造器”，用type关键字来定义：



//   定义高阶类型
type Foo[T] = Function0[T]
//   声明高阶类型变量
val foo: Foo[Int] = () =&amp;gt; 1
//  输出...]]></description><category></category></item><item><title><![CDATA[程序员生活杂记三：并行与并发]]></title><link>https://blog.youkuaiyun.com/yiifaa/article/details/82228930</link><guid>https://blog.youkuaiyun.com/yiifaa/article/details/82228930</guid><author>yiifaa</author><pubDate>Thu, 30 Aug 2018 22:31:56 +0800</pubDate><description><![CDATA[那天，被产品经理、测试、UI设计群殴了一顿，突然恍然大悟，他们真行啊，竟然使出了并行绝招。

我擦一下鼻血，写一行代码，骂一句：“我只会单线程并发啊！”...]]></description><category></category></item><item><title><![CDATA[Scala隐式转换函数的应用与总结]]></title><link>https://blog.youkuaiyun.com/yiifaa/article/details/82228331</link><guid>https://blog.youkuaiyun.com/yiifaa/article/details/82228331</guid><author>yiifaa</author><pubDate>Thu, 30 Aug 2018 21:44:34 +0800</pubDate><description><![CDATA[在(《Scala隐式类型约束的应用与总结》)[https://blog.youkuaiyun.com/yiifaa/article/details/82054393]中，我们讲解了隐式对象约束的方法，但在实践中，虽然其定义了统一的特质，便于实现与约束，但稍显复杂，这里还有一种替代方案——隐式转换函数，其接口声明如下：



def fn[A &amp;lt;% B](x: A) = x

它表示参数x的类型是A，但在...]]></description><category></category></item></channel></rss>