00:17
嗯,回不来了是吗?回不来算了,回不来来我看看啊。嗯,OK,那我们接着讲好,那刚刚呢,我们讲同步HDFS到my circle的这个案例啊,我们呢,有这么一个参数,什么参数呢?看啊,嗯,我们的这个HDFS的reader啊,有一个什么参数呢?在。诶,没了呢啊这呢now format反斜杠啊,大N这个是什么意思呢?啊,你们在创建have表的时候,哎,有没有见过这个参数啊,那我好办了,这个你们应该在创建have表的时候啊,哎,见过这么一个参数啊,那我们来看一看呗,啊把这个参数给它拿出来。
01:09
嗯。在哪呢,找一找,哎,这。啊,给它拿出来。CTRLC方程式,这个是一个have表的创建命令,我们看啊,首先删除表,然后创建一个哎,外部表table,那最终我们在这指定了这么一个字段,Row format。啊,Form,然后什么呢?Diated,哎,Files什么呀,Terminated by,哎,啊不是这个叫什么呀,这个是,哎,这个是,这个是这个字段的分格符啊,这个now的一个啊now值的这么一个DeFine什么意思呢?As空格,那你们创建的时候应该指定的是这个吧,反斜杠大N啊,你们指定的应该是反斜杠大N。
02:05
啊啊,关于焊有表的创建啊,关于now值的存储,在市面上现在一般都是指定的反型档N啊,那这个是有什么作用呢?它是关于nu值的存储的啊啊,我们在H啊,我们在have上,我们都知道有这个now啊,Now,那这个now值我们在HDFS上,哎,我们这个have have嘛,啊,我们现在是have,这样吧,怎么画图是吧,你看啊,我们现在是have,那have你说我们肯定会有now值吧,在have表当中肯定会有now值,那这个now值你说我们在HDFS上存储成什么合适呢?HDFS啊,同学说那那我就纯闹呗,对吧,那没有问题啊,我拿出来也是闹啊,那好了,那有这么一个问题,那你说我这个have上有这么一个字段,叫做now字符串。
03:05
那now字符串我存储在HDFS上,是不是依然是这么一个now啊,好了,那么接下来我的HDF啊,我这个have啊,再想从HDS加载这个数据的时候啊,你now值存储的是now now字符串存储的依然是now,那么have它懵了,我不知道我这个到底是一个闹值还是一个空字啊,还是一个闹字符串的啊,那这种情况不行啊,所以说我们在存储闹值的时候啊,我给你进行了一个指定,哎,给你指定成反斜杠大N,那也就是说如果你是闹的话,我们在HDFS上我给你存储成反斜杠答案。哎,是这么一个情况,好了,反向档啊,那我在HDFS存储是反斜杠档N,但是我这个HDFS上的数据,我现在要通过data叉给它导入到哪啊,给它导入到MYSQ。
04:06
啊卖。好了,那我既然是要导入到买车口啊,我导入的时候我发现诶你DFS上有一条数据是反斜杠大N的,但是我们的买circle并没有反斜杠大N这么样的一个类型。啊,买上没有。My circle上的这个nu值依然是用now来存储的,好了啊,那my circle,然后呢,拿到你这个反形大N,他不知道你是什么了,他可能觉得你是一个反斜杠大N字符串,哎,我就给你拿过来一反斜杠大N来进行存储了,但是我们是不是依然想让你这个反斜杠大N呢?在买circle上存储成一个闹字不串啊。那怎么办呢?所以说我们在data叉的这个地方就要做一个改动了,哎,我们在data叉的命令呢,我data叉不是要读HDFS吗?我在读HDFS的时候,我就要告诉你,当你发现呢,我HDFS上有一个字段是反斜杠大N的时候,哎,有其中这么一个字段的值是反斜杠大N,那么你存储在my circle上就用now值来存储,哎,这个就是一个值的转化啊,我在have上是now,那我在MYS上也得是nu,哎,但是呢,我在HDFS上存储的是反形的呢啊,那我就要就就得让这个data叉啊。
05:39
来知道这个事儿,如果我的HDFS上存储的是反向档,那么我给它存储在MYSQL,你就得用now值来存储了,好这个就是让这个叉,哎,知道这么一个事儿啊,你看我们怎么配置的呢,我们呢在配置的时候是怎么干的。哎,我们指定了一个no format啊,那同学说我这为什么用的是双反斜杠单呢,而我建表的时候用的是反斜杠单N呢?啊,那它们两个又有什么区别啊,是这样的,嗯,这个双反斜杠大N,原因是我们的data差啊,是用Java语言来写的。
06:19
对叉,我们这个摘次文件是给谁看的?是不是给date叉来看的呀,这个再次文件是给对来看的吧。啊,那既然是给对的差来看的。那这个叉他就得知道你这个反斜杠大N,你是一个字符串啊,还是一个什么东西啊,哎,所以说我们在这啊,要进行一个转译啊,你看如果说一个斜杠的话,那么这个Java在Java里它是一个特殊字符,所以说我们在这儿呢,要用一个反斜杠来给它进行一个转移,转移出来啊,你这个反星的大恩啊,是这个好。OK,那接下来。
07:02
啊,这个链路我们应该知道了,HDFS的数据到my circle案例,那我们还得分析一个问题啊,我们还有一个案例是my circleq到HDFS啊,那我们在买circleq上是不是也有闹啊?My circleql上是不是也有闹闹值,但是我们的呃,MYSQL的数据最终我们要给它存储在HDFS上吧,那HDFS上的数据它最终是要展示在哪啊?是不是要展示在have上啊?HIV啊,Have,那have上你买serve是now,你这个have我是不是也应该让你是闹好了,那但是呢,有这么一个事啊,我们在have见表的时候,我是不是就指定了。你存储在HDFS上啊,你这个now值啊,你是以反斜杠大N来存储的啊,我已经指定了你是以反向大N来存储的,那么接下来我们要用data差来进行同步了。
08:12
Data查来进行同步了啊,我要用my circle reader来读my circle,哎,然后我读到了一个now值,那读到了一个now,我们存储在HDFS上,你说我能存储闹吗?我存储闹肯定是不行啊,我这个have他不认你啊,他觉得你这个闹是一个字符串啊,你不是一个闹直。那这时候怎么办呢?啊,那有同学说,那我这个data叉它支持no form ma呀,啊,它支持以反斜杠答N的方式来进行数据传输,对啊,HDFS到my circle这个过程它支持反斜杠单刚刚我们也看到了,但是。有这一点很遗憾啊,这个很遗憾,My circle到HDFS反斜杠大N它不支持。
09:03
这点非常遗憾啊,那它是怎么存的呢?啊,如果说你是一个闹值的话。它呀,这个叉默认的会在HDFS上给你存储成一个空字符串。存储的一个空字符串啊,空这是一个空字符串。好了,那假设啊,我们以空字符串来存储,那么HDFS上啊,看到你有一个空字符串了,那HDFS它会把你当成啥呀?它会把你当成闹值吗?不会呀,我们HDFS建表的时候,我给你指定的是反氢向大。那么这个时候我发现你有一个空字符串,那have,它依然会把你当成一个空字符串。好,那这种方式是不是数据两边的数据,你看我这是一个闹,那我存储过来的时候变成一个空字符串了,那两边儿数据类型不匹配啊,不一致啊,那不行啊,你数据不一致,这不是我们想要的,这不是我们收藏的目的,你数据同步完了,数据类型都不一样的,那肯定不行。
10:15
好,那怎么办呢?我们如何来解决这个问题呢?哎,有两个解决方案,第一个我们在创建焊物表的时候。你这个闹值的存储啊,我们不是给你指定成了一个反斜杠大吗?不对,我现在不给你指定成反向大N了,如果说你是闹的话,我就给你指定成一个空字符串,哎,我就让你变成一个空符串啊,那你这边是闹啊,然后你这是空字符串好了,然后我们看看啊,那这个叉呢,它写入了一个啊,这有一个闹啊,过来以空字符串来进行存储,哎,我的have是不是他知道你是一个脑值呀啊,我见表的时候我就指定了呀,你以控制符串来存储到,但是有这么一个事儿啊。
11:04
那如果说我们这边就有一个空字符串的数据,这就是一个空串的数据,那过来了之后是不是依然是一个空串啊,那好了,那现在害我,你说我是以空串来读呢,还是以闹来读呢?哎,他也有点懵,那他也不知道,他依然会把你当成一个闹出来存储,那这样呢,能不能行呢?这种方式能不能做呢?其实也能做,但是这么处理啊,他不太优雅。哎,他不太优雅,那如何来优雅的处理这个事呢?啊,如何来优雅的处理这个事儿,想要优雅的处理。我们的have这端呢,依然要以反斜杠大N来存储now值,哎,Now值我依然要以反斜杠大N来存储。Nul啊,依然要以反型的答案来存储,那么我这个my circle号,我写了一个now,那怎么办呢?它默认是空格啊,你反型的答案不行,对你默认的不行,那我们呢,就要重写。
12:11
对叉的源码了啊,重写这叉的源码,把这个逻辑给你改了。怎么改呀,你默认不是以反啊空格来存储吗?你是一个闹的话,如果说你这边是一个闹值,你默认不是空格吗?我给你改成以反斜杠答案来存储,哎,这种方式它解决起来是比较优雅的。啊,OK,那么这个就是关于data叉now值存储的啊,它存在的这么一个问题,哎,Datax在now值存储上啊,有这么一个小bug啊OK,那也不算是bug吧,人家呢,已经把这个问题明确了啊,那我们呢,要知道这么一个事儿能不能解决呢?也能解决两个解决方案,第一个have在存储的时候,我就给你指定成空串,那它不太优雅,那我想优雅的解决怎么办?
13:03
重写data叉的源码啊,那关于这个重写的方案呢,其实在我们的,哎这个地方呢,给大家已经准备好了一个博客啊,你看。在哪呢?嗯,这的啊,这博课你们可以自己去看一下啊,那我那我就不带着你们去改了,因为这个呢,它不是我们课上的一个重点啊,这个呀,你们自己下去看啊,你们自己下去看如何来重写这个data叉关于闹值存储的这么一个源码啊,那你们呢,自己有经历的啊,去看一看啊。
我来说两句