序列化Writable接口

2023-05-16

        基本序列化类型往往不能满足所有需求,比如在Hadoop框架内部传递一个自定义bean对象,那么该对象就需要实现Writable序列化接口。 

实现Writable序列化步骤如下

(1)必须实现Writable接口

(2)反序列化时,需要反射调用空参构造函数,所以必须有空参构造

public CustomBean() {
    super();
}

(3)重写序列化方法

@Override
public void write(DataOutput out) throws IOException {
    ....
}

(4)重写反序列化方法

@Override
public void readFields(DataInput in) throws IOException {
    ....
}

(5)反序列化的字段顺序和序列化字段的顺序必须完全一致

(6)方便展示结果数据,需要重写bean对象的toString()方法,可以自定义分隔符

(7)如果自定义Bean对象需要放在Mapper输出KV中的K,则该对象还需实现Comparable接口,因为因为MapReduce框中的Shuffle过程要求对key必须能排序!!

@Override
public int compareTo(CustomBean o) {
    // 自定义排序规则
    return this.num > o.getNum() ? -1 : 1;
}

Writable接口案例

1、需求

统计每台智能音箱设备内容播放时长

原始日志格式

001     001577c3     kar_890809             120.196.100.99     1116         954                       200
日志id 设备id         appkey(合作硬件厂商)   网络ip         自有内容时长(秒) 第三方内容时长(秒)     网络状态码

输出结果

001577c3     11160         9540                 20700
设备id     自有内容时长(秒) 第三方内容时长(秒)     总时长

mr编程总结

  • map()方法输出的kv以及具体类型如何确定?mr中map()方法输出的key如果是相同key则会去往同个reduce调用reduce方法。
  • reduce()方法中输入参数kv,key:map()方法输出某个key,而value:value是一个集合,这个集合中的数据都来自于map输出的kv,而且是k相同的所有kv对的value集合在一起。

整体思路分析

Map阶段:

  1. 读取一行文本数据,按照制表符切分
  2. 抽取出自由内容时长,第三方内容时长,设备id
  3. 输出:key-->设备id,value:封装一个bean对象,bean对象携带自由时长,第三方内容时长,设备id
  4. 自定义bean对象作为value输出,需要实现writable序列化接口

Reduce阶段:

在reduce方法中直接遍历迭代器,累加时长即可

原始数据:

01	a00df6s	kar	120.196.100.99	384	33	200
11	0sfs01	kar	120.196.100.99	198	86	200
21	adfd00fd5	pandora	120.196.100.99	513	261	200
31	0ad0s7	pandora	120.196.100.99	840	413	200
41	0sfs01	kar	120.196.100.99	190	401	200
51	00fdaf3	kar	120.196.100.99	273	527	200
61	00fdaf3	pandora	120.196.100.99	950	526	200
71	0a0fe2	kar	120.196.100.99	730	496	200
81	0a0fe2	pandora	120.196.100.99	367	759	200
91	0sfs01	kar	120.196.100.99	529	484	200
101	adfd00fd5	kar	120.196.100.99	516	18	200
111	a00df6s	pandora	120.196.100.99	300	745	200
121	0a0fe2	kar	120.196.100.99	416	847	200
131	00fdaf3	kar	120.196.100.99	268	489	200
141	00wersa4	kar	120.196.100.99	74	815	200
151	00wersa4	pandora	120.196.100.99	445	293	200
161	00fdaf3	kar	120.196.100.99	673	77	200
171	a00df6s	kar	120.196.100.99	378	138	200
181	0sfs01	pandora	120.196.100.99	55	80	200
191	00fdaf3	kar	120.196.100.99	699	7	200
201	00fdaf3	pandora	120.196.100.99	752	687	200
211	00wersa4	kar	120.196.100.99	448	117	200
221	a00df6s	pandora	120.196.100.99	17	771	200
231	00fdaf3	kar	120.196.100.99	732	701	200
241	0ad0s7	pandora	120.196.100.99	923	24	200
251	0sfs01	pandora	120.196.100.99	476	781	200
261	adfd00fd5	pandora	120.196.100.99	655	163	200
271	0a0fe2	pandora	120.196.100.99	128	251	200
281	00fdaf3	kar	120.196.100.99	704	149	200
291	a00df6s	pandora	120.196.100.99	839	383	200
301	0sfs01	pandora	120.196.100.99	230	38	200
311	adfd00fd5	kar	120.196.100.99	100	661	200
321	adfd00fd5	kar	120.196.100.99	839	442	200
331	0sfs01	pandora	120.196.100.99	165	256	200
341	a00df6s	pandora	120.196.100.99	950	247	200
351	0ad0s7	pandora	120.196.100.99	791	760	200
361	0a0fe2	pandora	120.196.100.99	118	180	200
371	adfd00fd5	kar	120.196.100.99	749	581	200
381	0a0fe2	pandora	120.196.100.99	69	324	200
391	0ad0s7	pandora	120.196.100.99	337	144	200
401	0a0fe2	kar	120.196.100.99	43	120	200
411	adfd00fd5	pandora	120.196.100.99	311	608	200
421	00wersa4	pandora	120.196.100.99	10	680	200
431	00wersa4	pandora	120.196.100.99	206	843	200
441	00fdaf3	kar	120.196.100.99	733	58	200
451	00wersa4	kar	120.196.100.99	247	528	200
461	00fdaf3	pandora	120.196.100.99	403	121	200
471	adfd00fd5	pandora	120.196.100.99	494	771	200
481	00fdaf3	kar	120.196.100.99	770	511	200
491	0ad0s7	kar	120.196.100.99	686	313	200
501	adfd00fd5	pandora	120.196.100.99	566	914	200
511	00fdaf3	kar	120.196.100.99	895	687	200
521	00wersa4	kar	120.196.100.99	217	322	200
531	0sfs01	kar	120.196.100.99	585	766	200
541	adfd00fd5	kar	120.196.100.99	450	209	200
551	00fdaf3	kar	120.196.100.99	392	658	200
561	a00df6s	kar	120.196.100.99	33	689	200
571	0a0fe2	kar	120.196.100.99	71	550	200
581	0sfs01	pandora	120.196.100.99	742	345	200
591	a00df6s	pandora	120.196.100.99	335	640	200
601	00fdaf3	kar	120.196.100.99	807	752	200
611	00fdaf3	kar	120.196.100.99	447	811	200
621	00wersa4	kar	120.196.100.99	32	120	200
631	a00df6s	pandora	120.196.100.99	170	472	200
641	0sfs01	kar	120.196.100.99	538	915	200
651	0sfs01	pandora	120.196.100.99	870	659	200
661	0a0fe2	pandora	120.196.100.99	158	97	200
671	0ad0s7	pandora	120.196.100.99	97	276	200
681	adfd00fd5	pandora	120.196.100.99	713	80	200
691	0a0fe2	pandora	120.196.100.99	324	818	200
701	00fdaf3	pandora	120.196.100.99	808	386	200
711	00wersa4	kar	120.196.100.99	418	129	200
721	0sfs01	kar	120.196.100.99	994	842	200
731	0ad0s7	pandora	120.196.100.99	639	525	200
741	a00df6s	kar	120.196.100.99	827	134	200
751	00wersa4	kar	120.196.100.99	594	44	200
761	0ad0s7	kar	120.196.100.99	197	558	200
771	00wersa4	pandora	120.196.100.99	477	832	200
781	0a0fe2	pandora	120.196.100.99	870	283	200
791	00fdaf3	pandora	120.196.100.99	50	50	200
801	a00df6s	pandora	120.196.100.99	158	488	200
811	00wersa4	kar	120.196.100.99	701	736	200
821	0sfs01	pandora	120.196.100.99	127	316	200
831	00wersa4	pandora	120.196.100.99	670	719	200
841	adfd00fd5	kar	120.196.100.99	405	630	200
851	00wersa4	kar	120.196.100.99	78	976	200
861	00wersa4	kar	120.196.100.99	510	527	200
871	adfd00fd5	kar	120.196.100.99	62	407	200
881	00fdaf3	kar	120.196.100.99	873	403	200
891	0a0fe2	kar	120.196.100.99	157	431	200
901	a00df6s	pandora	120.196.100.99	112	319	200
911	adfd00fd5	kar	120.196.100.99	144	14	200
921	00fdaf3	kar	120.196.100.99	879	444	200
931	a00df6s	pandora	120.196.100.99	882	47	200
941	adfd00fd5	pandora	120.196.100.99	620	114	200
951	00wersa4	kar	120.196.100.99	35	59	200
961	00wersa4	kar	120.196.100.99	79	181	200
971	00wersa4	kar	120.196.100.99	34	758	200
981	a00df6s	pandora	120.196.100.99	649	907	200
991	0ad0s7	kar	120.196.100.99	206	408	200
1001	0a0fe2	pandora	120.196.100.99	710	300	200
1011	0sfs01	pandora	120.196.100.99	326	232	200
1021	0ad0s7	pandora	120.196.100.99	749	648	200
1031	00fdaf3	kar	120.196.100.99	749	522	200
1041	0ad0s7	kar	120.196.100.99	516	692	200
1051	adfd00fd5	kar	120.196.100.99	242	706	200
1061	a00df6s	kar	120.196.100.99	6	477	200
1071	00wersa4	pandora	120.196.100.99	401	79	200
1081	00wersa4	kar	120.196.100.99	238	178	200
1091	0ad0s7	pandora	120.196.100.99	613	640	200
1101	00fdaf3	pandora	120.196.100.99	83	925	200
1111	0ad0s7	pandora	120.196.100.99	424	937	200
1121	00wersa4	pandora	120.196.100.99	468	194	200
1131	0sfs01	pandora	120.196.100.99	790	503	200
1141	00fdaf3	pandora	120.196.100.99	51	839	200
1151	0sfs01	kar	120.196.100.99	480	399	200
1161	00fdaf3	pandora	120.196.100.99	884	130	200
1171	a00df6s	kar	120.196.100.99	580	955	200
1181	0ad0s7	pandora	120.196.100.99	316	358	200
1191	a00df6s	pandora	120.196.100.99	255	884	200
1201	adfd00fd5	pandora	120.196.100.99	244	813	200
1211	0sfs01	pandora	120.196.100.99	693	504	200
1221	adfd00fd5	pandora	120.196.100.99	708	222	200
1231	0a0fe2	pandora	120.196.100.99	125	845	200
1241	0sfs01	kar	120.196.100.99	274	528	200
1251	0ad0s7	pandora	120.196.100.99	679	196	200
1261	00wersa4	pandora	120.196.100.99	859	541	200
1271	0sfs01	kar	120.196.100.99	279	606	200
1281	00wersa4	pandora	120.196.100.99	62	720	200
1291	adfd00fd5	pandora	120.196.100.99	833	466	200
1301	0ad0s7	kar	120.196.100.99	622	438	200
1311	00wersa4	pandora	120.196.100.99	356	916	200
1321	adfd00fd5	pandora	120.196.100.99	214	640	200
1331	00wersa4	kar	120.196.100.99	369	15	200
1341	0a0fe2	kar	120.196.100.99	404	367	200
1351	0sfs01	kar	120.196.100.99	827	916	200
1361	00fdaf3	pandora	120.196.100.99	88	798	200
1371	0sfs01	kar	120.196.100.99	175	136	200
1381	00wersa4	pandora	120.196.100.99	132	988	200
1391	0sfs01	kar	120.196.100.99	307	369	200
1401	a00df6s	pandora	120.196.100.99	483	951	200
1411	adfd00fd5	pandora	120.196.100.99	760	689	200
1421	0sfs01	pandora	120.196.100.99	75	449	200
1431	00fdaf3	kar	120.196.100.99	17	969	200
1441	a00df6s	pandora	120.196.100.99	685	541	200
1451	00fdaf3	pandora	120.196.100.99	690	935	200
1461	0a0fe2	kar	120.196.100.99	161	794	200
1471	0ad0s7	kar	120.196.100.99	772	400	200
1481	0sfs01	kar	120.196.100.99	885	567	200
1491	0a0fe2	kar	120.196.100.99	597	646	200
1501	0sfs01	pandora	120.196.100.99	93	157	200
1511	0a0fe2	pandora	120.196.100.99	290	18	200
1521	adfd00fd5	pandora	120.196.100.99	241	368	200
1531	a00df6s	kar	120.196.100.99	47	658	200
1541	0a0fe2	pandora	120.196.100.99	899	878	200
1551	00wersa4	pandora	120.196.100.99	787	956	200
1561	a00df6s	pandora	120.196.100.99	888	21	200
1571	adfd00fd5	kar	120.196.100.99	439	41	200
1581	0a0fe2	kar	120.196.100.99	564	792	200
1591	adfd00fd5	pandora	120.196.100.99	661	682	200
1601	0a0fe2	kar	120.196.100.99	680	11	200
1611	a00df6s	kar	120.196.100.99	18	566	200
1621	a00df6s	kar	120.196.100.99	613	658	200
1631	00fdaf3	kar	120.196.100.99	574	242	200
1641	0ad0s7	pandora	120.196.100.99	992	453	200
1651	0a0fe2	kar	120.196.100.99	592	334	200
1661	0sfs01	kar	120.196.100.99	30	719	200
1671	00wersa4	pandora	120.196.100.99	988	494	200
1681	0a0fe2	kar	120.196.100.99	654	306	200
1691	0sfs01	kar	120.196.100.99	519	198	200
1701	adfd00fd5	pandora	120.196.100.99	796	83	200
1711	0a0fe2	pandora	120.196.100.99	318	701	200
1721	0a0fe2	pandora	120.196.100.99	98	244	200
1731	adfd00fd5	pandora	120.196.100.99	293	634	200
1741	00wersa4	pandora	120.196.100.99	62	812	200
1751	0sfs01	kar	120.196.100.99	548	130	200
1761	0a0fe2	pandora	120.196.100.99	496	120	200
1771	0sfs01	kar	120.196.100.99	737	223	200
1781	0a0fe2	kar	120.196.100.99	498	262	200
1791	adfd00fd5	kar	120.196.100.99	218	193	200
1801	00fdaf3	kar	120.196.100.99	120	564	200
1811	adfd00fd5	pandora	120.196.100.99	177	209	200
1821	00fdaf3	kar	120.196.100.99	392	397	200
1831	0a0fe2	pandora	120.196.100.99	824	336	200
1841	a00df6s	pandora	120.196.100.99	721	395	200
1851	0sfs01	kar	120.196.100.99	764	660	200
1861	0ad0s7	pandora	120.196.100.99	589	101	200
1871	00wersa4	pandora	120.196.100.99	356	356	200
1881	0sfs01	pandora	120.196.100.99	216	307	200
1891	00fdaf3	kar	120.196.100.99	1	582	200
1901	00wersa4	kar	120.196.100.99	912	436	200
1911	0sfs01	pandora	120.196.100.99	405	719	200
1921	a00df6s	kar	120.196.100.99	941	542	200
1931	00wersa4	kar	120.196.100.99	966	490	200
1941	00fdaf3	pandora	120.196.100.99	960	454	200
1951	0ad0s7	kar	120.196.100.99	545	39	200
1961	00fdaf3	pandora	120.196.100.99	293	299	200
1971	0a0fe2	kar	120.196.100.99	825	462	200
1981	adfd00fd5	kar	120.196.100.99	34	751	200
1991	a00df6s	kar	120.196.100.99	807	569	200
2001	0a0fe2	pandora	120.196.100.99	160	973	200
2011	00wersa4	pandora	120.196.100.99	497	637	200
2021	00fdaf3	kar	120.196.100.99	302	27	200
2031	0sfs01	pandora	120.196.100.99	653	104	200
2041	0a0fe2	kar	120.196.100.99	963	65	200
2051	0ad0s7	kar	120.196.100.99	204	828	200
2061	00wersa4	kar	120.196.100.99	91	656	200
2071	0a0fe2	pandora	120.196.100.99	937	34	200
2081	adfd00fd5	pandora	120.196.100.99	350	748	200
2091	0a0fe2	pandora	120.196.100.99	97	688	200
2101	0ad0s7	kar	120.196.100.99	430	338	200
2111	0sfs01	pandora	120.196.100.99	595	827	200
2121	0a0fe2	kar	120.196.100.99	726	578	200
2131	adfd00fd5	pandora	120.196.100.99	31	501	200
2141	0ad0s7	kar	120.196.100.99	389	925	200
2151	adfd00fd5	pandora	120.196.100.99	136	559	200
2161	00wersa4	pandora	120.196.100.99	3	927	200
2171	adfd00fd5	pandora	120.196.100.99	908	583	200
2181	00wersa4	pandora	120.196.100.99	921	598	200
2191	adfd00fd5	pandora	120.196.100.99	112	956	200
2201	0sfs01	kar	120.196.100.99	115	32	200
2211	a00df6s	pandora	120.196.100.99	86	996	200
2221	0ad0s7	pandora	120.196.100.99	790	705	200
2231	0a0fe2	kar	120.196.100.99	24	548	200
2241	a00df6s	kar	120.196.100.99	611	58	200
2251	00fdaf3	pandora	120.196.100.99	500	800	200
2261	adfd00fd5	kar	120.196.100.99	852	530	200
2271	00wersa4	pandora	120.196.100.99	208	957	200
2281	0a0fe2	kar	120.196.100.99	900	137	200
2291	adfd00fd5	kar	120.196.100.99	292	550	200
2301	0a0fe2	kar	120.196.100.99	977	983	200
2311	00fdaf3	pandora	120.196.100.99	517	244	200
2321	0a0fe2	pandora	120.196.100.99	419	481	200
2331	00fdaf3	kar	120.196.100.99	117	500	200
2341	adfd00fd5	pandora	120.196.100.99	76	68	200
2351	00wersa4	pandora	120.196.100.99	318	285	200
2361	00wersa4	pandora	120.196.100.99	263	72	200
2371	00fdaf3	kar	120.196.100.99	222	150	200
2381	00wersa4	pandora	120.196.100.99	210	493	200
2391	0sfs01	pandora	120.196.100.99	538	4	200
2401	0ad0s7	kar	120.196.100.99	214	880	200
2411	adfd00fd5	pandora	120.196.100.99	709	369	200
2421	0a0fe2	kar	120.196.100.99	411	383	200
2431	0ad0s7	pandora	120.196.100.99	15	350	200
2441	0a0fe2	kar	120.196.100.99	135	440	200
2451	0sfs01	pandora	120.196.100.99	120	737	200
2461	0a0fe2	kar	120.196.100.99	941	510	200
2471	adfd00fd5	pandora	120.196.100.99	363	263	200
2481	0sfs01	kar	120.196.100.99	928	427	200
2491	0ad0s7	pandora	120.196.100.99	590	635	200
2501	a00df6s	pandora	120.196.100.99	335	967	200
2511	0sfs01	pandora	120.196.100.99	214	756	200
2521	0a0fe2	kar	120.196.100.99	208	119	200
2531	adfd00fd5	kar	120.196.100.99	821	579	200
2541	00wersa4	pandora	120.196.100.99	319	262	200
2551	adfd00fd5	pandora	120.196.100.99	310	10	200
2561	00fdaf3	pandora	120.196.100.99	389	103	200
2571	00wersa4	kar	120.196.100.99	772	957	200
2581	0a0fe2	pandora	120.196.100.99	43	359	200
2591	00wersa4	pandora	120.196.100.99	920	4	200
2601	0a0fe2	kar	120.196.100.99	542	391	200
2611	adfd00fd5	kar	120.196.100.99	730	407	200
2621	0a0fe2	pandora	120.196.100.99	682	712	200
2631	0a0fe2	pandora	120.196.100.99	349	304	200
2641	00fdaf3	pandora	120.196.100.99	529	678	200
2651	0sfs01	kar	120.196.100.99	109	100	200
2661	0ad0s7	pandora	120.196.100.99	715	501	200
2671	0sfs01	kar	120.196.100.99	401	41	200
2681	a00df6s	kar	120.196.100.99	5	110	200
2691	00wersa4	pandora	120.196.100.99	155	377	200
2701	00fdaf3	kar	120.196.100.99	172	954	200
2711	0a0fe2	kar	120.196.100.99	772	838	200
2721	00wersa4	kar	120.196.100.99	984	397	200
2731	00wersa4	kar	120.196.100.99	803	451	200
2741	0ad0s7	kar	120.196.100.99	636	380	200
2751	0ad0s7	pandora	120.196.100.99	565	288	200
2761	adfd00fd5	kar	120.196.100.99	74	423	200
2771	adfd00fd5	pandora	120.196.100.99	643	734	200
2781	0sfs01	pandora	120.196.100.99	808	847	200
2791	adfd00fd5	kar	120.196.100.99	377	415	200
2801	0a0fe2	pandora	120.196.100.99	263	968	200
2811	0a0fe2	kar	120.196.100.99	258	287	200
2821	0ad0s7	kar	120.196.100.99	32	248	200
2831	0ad0s7	kar	120.196.100.99	343	213	200
2841	00fdaf3	pandora	120.196.100.99	239	62	200
2851	0sfs01	kar	120.196.100.99	327	58	200
2861	a00df6s	kar	120.196.100.99	146	691	200
2871	adfd00fd5	pandora	120.196.100.99	158	896	200
2881	00fdaf3	kar	120.196.100.99	897	788	200
2891	0sfs01	pandora	120.196.100.99	904	755	200
2901	0sfs01	pandora	120.196.100.99	661	781	200
2911	00wersa4	kar	120.196.100.99	516	379	200
2921	0a0fe2	kar	120.196.100.99	946	791	200
2931	adfd00fd5	pandora	120.196.100.99	83	272	200
2941	a00df6s	pandora	120.196.100.99	350	906	200
2951	0ad0s7	kar	120.196.100.99	711	580	200
2961	0sfs01	pandora	120.196.100.99	162	939	200
2971	00fdaf3	pandora	120.196.100.99	38	956	200
2981	00fdaf3	kar	120.196.100.99	406	567	200
2991	00fdaf3	pandora	120.196.100.99	191	47	200
3001	adfd00fd5	kar	120.196.100.99	78	229	200
3011	0ad0s7	kar	120.196.100.99	122	12	200
3021	adfd00fd5	pandora	120.196.100.99	137	856	200
3031	a00df6s	pandora	120.196.100.99	610	0	200
3041	0a0fe2	kar	120.196.100.99	598	722	200
3051	adfd00fd5	kar	120.196.100.99	195	629	200
3061	0a0fe2	kar	120.196.100.99	550	482	200
3071	00fdaf3	kar	120.196.100.99	781	76	200
3081	a00df6s	pandora	120.196.100.99	623	78	200
3091	00wersa4	pandora	120.196.100.99	513	628	200
3101	00fdaf3	kar	120.196.100.99	893	809	200
3111	00fdaf3	pandora	120.196.100.99	720	447	200
3121	0a0fe2	kar	120.196.100.99	521	662	200
3131	00wersa4	kar	120.196.100.99	169	291	200
3141	0a0fe2	kar	120.196.100.99	676	930	200
3151	a00df6s	kar	120.196.100.99	522	775	200
3161	0ad0s7	kar	120.196.100.99	889	421	200
3171	a00df6s	kar	120.196.100.99	299	833	200
3181	0a0fe2	pandora	120.196.100.99	912	209	200
3191	0sfs01	kar	120.196.100.99	856	670	200
3201	0ad0s7	pandora	120.196.100.99	151	929	200
3211	0a0fe2	pandora	120.196.100.99	213	442	200
3221	0ad0s7	pandora	120.196.100.99	857	11	200
3231	0sfs01	pandora	120.196.100.99	361	659	200
3241	0a0fe2	kar	120.196.100.99	953	374	200
3251	adfd00fd5	kar	120.196.100.99	917	594	200
3261	a00df6s	pandora	120.196.100.99	909	268	200
3271	0ad0s7	kar	120.196.100.99	828	785	200
3281	a00df6s	kar	120.196.100.99	85	953	200
3291	a00df6s	pandora	120.196.100.99	715	757	200
3301	00fdaf3	kar	120.196.100.99	82	105	200
3311	00wersa4	kar	120.196.100.99	575	972	200
3321	a00df6s	pandora	120.196.100.99	305	573	200
3331	0ad0s7	kar	120.196.100.99	675	64	200
3341	0sfs01	pandora	120.196.100.99	488	38	200
3351	adfd00fd5	pandora	120.196.100.99	553	283	200
3361	adfd00fd5	pandora	120.196.100.99	973	608	200
3371	0a0fe2	pandora	120.196.100.99	166	296	200
3381	00fdaf3	kar	120.196.100.99	156	608	200
3391	00wersa4	kar	120.196.100.99	640	880	200
3401	00wersa4	kar	120.196.100.99	679	598	200
3411	a00df6s	kar	120.196.100.99	345	650	200
3421	0a0fe2	kar	120.196.100.99	61	99	200
3431	00fdaf3	pandora	120.196.100.99	139	384	200
3441	0ad0s7	kar	120.196.100.99	901	19	200
3451	00fdaf3	kar	120.196.100.99	379	920	200
3461	0ad0s7	kar	120.196.100.99	153	252	200
3471	a00df6s	pandora	120.196.100.99	816	897	200
3481	adfd00fd5	kar	120.196.100.99	126	237	200
3491	a00df6s	pandora	120.196.100.99	890	993	200
3501	0ad0s7	kar	120.196.100.99	656	855	200
3511	a00df6s	kar	120.196.100.99	21	541	200
3521	a00df6s	pandora	120.196.100.99	264	407	200
3531	00fdaf3	pandora	120.196.100.99	749	849	200
3541	0sfs01	kar	120.196.100.99	975	481	200
3551	adfd00fd5	pandora	120.196.100.99	762	107	200
3561	a00df6s	kar	120.196.100.99	514	446	200
3571	a00df6s	kar	120.196.100.99	123	212	200
3581	00wersa4	kar	120.196.100.99	422	23	200
3591	a00df6s	pandora	120.196.100.99	564	638	200
3601	00fdaf3	kar	120.196.100.99	866	543	200
3611	00fdaf3	pandora	120.196.100.99	601	542	200
3621	adfd00fd5	kar	120.196.100.99	321	748	200
3631	a00df6s	kar	120.196.100.99	458	323	200
3641	0sfs01	kar	120.196.100.99	503	685	200
3651	0ad0s7	kar	120.196.100.99	551	173	200
3661	00wersa4	pandora	120.196.100.99	833	21	200
3671	0a0fe2	kar	120.196.100.99	171	694	200
3681	0sfs01	pandora	120.196.100.99	943	846	200
3691	a00df6s	pandora	120.196.100.99	339	316	200
3701	0a0fe2	kar	120.196.100.99	524	511	200
3711	0ad0s7	pandora	120.196.100.99	438	324	200
3721	adfd00fd5	pandora	120.196.100.99	9	6	200
3731	0ad0s7	kar	120.196.100.99	284	960	200
3741	00fdaf3	pandora	120.196.100.99	191	446	200
3751	0ad0s7	pandora	120.196.100.99	216	618	200
3761	adfd00fd5	pandora	120.196.100.99	812	906	200
3771	a00df6s	kar	120.196.100.99	975	630	200
3781	0a0fe2	kar	120.196.100.99	578	47	200
3791	a00df6s	pandora	120.196.100.99	448	227	200
3801	0a0fe2	kar	120.196.100.99	965	221	200
3811	a00df6s	pandora	120.196.100.99	643	442	200
3821	0a0fe2	pandora	120.196.100.99	819	206	200
3831	a00df6s	pandora	120.196.100.99	420	293	200
3841	00wersa4	kar	120.196.100.99	555	765	200
3851	00wersa4	pandora	120.196.100.99	576	817	200
3861	0a0fe2	kar	120.196.100.99	200	552	200
3871	0ad0s7	kar	120.196.100.99	372	212	200
3881	0sfs01	pandora	120.196.100.99	862	471	200
3891	a00df6s	pandora	120.196.100.99	139	22	200
3901	0ad0s7	kar	120.196.100.99	849	682	200
3911	0ad0s7	pandora	120.196.100.99	62	884	200
3921	00fdaf3	pandora	120.196.100.99	578	453	200
3931	00wersa4	kar	120.196.100.99	867	536	200
3941	0sfs01	pandora	120.196.100.99	915	631	200
3951	0ad0s7	kar	120.196.100.99	456	449	200
3961	0sfs01	pandora	120.196.100.99	887	462	200
3971	00fdaf3	pandora	120.196.100.99	438	329	200
3981	adfd00fd5	pandora	120.196.100.99	117	956	200
3991	00fdaf3	pandora	120.196.100.99	32	178	200
4001	0a0fe2	pandora	120.196.100.99	140	573	200
4011	a00df6s	kar	120.196.100.99	323	800	200
4021	a00df6s	pandora	120.196.100.99	94	262	200
4031	0sfs01	kar	120.196.100.99	22	617	200
4041	00wersa4	kar	120.196.100.99	958	223	200
4051	0sfs01	kar	120.196.100.99	993	367	200
4061	0a0fe2	pandora	120.196.100.99	292	665	200
4071	0a0fe2	kar	120.196.100.99	551	684	200
4081	00wersa4	pandora	120.196.100.99	869	137	200
4091	a00df6s	kar	120.196.100.99	309	596	200
4101	adfd00fd5	kar	120.196.100.99	157	450	200
4111	0ad0s7	pandora	120.196.100.99	90	86	200
4121	0sfs01	kar	120.196.100.99	231	118	200
4131	a00df6s	pandora	120.196.100.99	727	435	200
4141	00wersa4	pandora	120.196.100.99	112	918	200
4151	adfd00fd5	pandora	120.196.100.99	262	61	200
4161	00fdaf3	kar	120.196.100.99	553	164	200
4171	0a0fe2	kar	120.196.100.99	597	321	200
4181	00fdaf3	kar	120.196.100.99	20	464	200
4191	adfd00fd5	kar	120.196.100.99	602	109	200
4201	adfd00fd5	kar	120.196.100.99	508	80	200
4211	0ad0s7	pandora	120.196.100.99	485	513	200
4221	0ad0s7	kar	120.196.100.99	159	237	200
4231	00fdaf3	pandora	120.196.100.99	979	530	200
4241	0sfs01	pandora	120.196.100.99	557	356	200
4251	a00df6s	kar	120.196.100.99	502	810	200
4261	0a0fe2	pandora	120.196.100.99	223	642	200
4271	adfd00fd5	kar	120.196.100.99	720	89	200
4281	a00df6s	kar	120.196.100.99	538	103	200
4291	0a0fe2	pandora	120.196.100.99	615	415	200
4301	0sfs01	kar	120.196.100.99	676	228	200
4311	0a0fe2	kar	120.196.100.99	231	94	200
4321	0sfs01	kar	120.196.100.99	515	756	200
4331	a00df6s	kar	120.196.100.99	885	884	200
4341	adfd00fd5	pandora	120.196.100.99	843	262	200
4351	0a0fe2	kar	120.196.100.99	24	326	200
4361	a00df6s	pandora	120.196.100.99	558	904	200
4371	00fdaf3	pandora	120.196.100.99	128	454	200
4381	adfd00fd5	pandora	120.196.100.99	499	501	200
4391	00wersa4	kar	120.196.100.99	49	38	200
4401	adfd00fd5	pandora	120.196.100.99	9	432	200
4411	00wersa4	kar	120.196.100.99	174	138	200
4421	adfd00fd5	kar	120.196.100.99	138	150	200
4431	0a0fe2	pandora	120.196.100.99	151	130	200
4441	a00df6s	kar	120.196.100.99	907	896	200
4451	00fdaf3	pandora	120.196.100.99	165	892	200
4461	0sfs01	kar	120.196.100.99	816	326	200
4471	adfd00fd5	kar	120.196.100.99	483	461	200
4481	adfd00fd5	kar	120.196.100.99	810	276	200
4491	00fdaf3	kar	120.196.100.99	253	601	200
4501	0ad0s7	pandora	120.196.100.99	634	176	200
4511	0a0fe2	pandora	120.196.100.99	377	710	200
4521	0a0fe2	kar	120.196.100.99	5	673	200
4531	0a0fe2	pandora	120.196.100.99	290	837	200
4541	0a0fe2	pandora	120.196.100.99	623	465	200
4551	0a0fe2	pandora	120.196.100.99	362	568	200
4561	0a0fe2	kar	120.196.100.99	866	508	200
4571	00fdaf3	kar	120.196.100.99	965	173	200
4581	00wersa4	pandora	120.196.100.99	174	670	200
4591	a00df6s	pandora	120.196.100.99	578	377	200
4601	0a0fe2	pandora	120.196.100.99	752	65	200
4611	adfd00fd5	pandora	120.196.100.99	131	564	200
4621	00wersa4	kar	120.196.100.99	349	756	200
4631	00wersa4	pandora	120.196.100.99	33	291	200
4641	0a0fe2	pandora	120.196.100.99	749	316	200
4651	0a0fe2	pandora	120.196.100.99	242	505	200
4661	a00df6s	pandora	120.196.100.99	930	486	200
4671	0a0fe2	pandora	120.196.100.99	445	916	200
4681	00wersa4	kar	120.196.100.99	584	154	200
4691	a00df6s	pandora	120.196.100.99	35	62	200
4701	a00df6s	pandora	120.196.100.99	892	633	200
4711	00wersa4	pandora	120.196.100.99	445	889	200
4721	adfd00fd5	pandora	120.196.100.99	543	664	200
4731	0a0fe2	pandora	120.196.100.99	850	497	200
4741	0sfs01	kar	120.196.100.99	626	691	200
4751	0ad0s7	kar	120.196.100.99	895	886	200
4761	0a0fe2	pandora	120.196.100.99	601	106	200
4771	0a0fe2	pandora	120.196.100.99	718	638	200
4781	a00df6s	pandora	120.196.100.99	538	158	200
4791	0ad0s7	kar	120.196.100.99	514	663	200
4801	0ad0s7	pandora	120.196.100.99	605	996	200
4811	0ad0s7	kar	120.196.100.99	695	234	200
4821	0ad0s7	pandora	120.196.100.99	307	784	200
4831	00fdaf3	kar	120.196.100.99	844	128	200
4841	0a0fe2	kar	120.196.100.99	352	963	200
4851	a00df6s	pandora	120.196.100.99	690	641	200
4861	0a0fe2	kar	120.196.100.99	690	878	200
4871	00fdaf3	kar	120.196.100.99	179	400	200
4881	0ad0s7	kar	120.196.100.99	593	588	200
4891	0ad0s7	pandora	120.196.100.99	405	888	200
4901	00wersa4	pandora	120.196.100.99	783	611	200
4911	00fdaf3	pandora	120.196.100.99	711	793	200
4921	a00df6s	kar	120.196.100.99	95	603	200
4931	0a0fe2	kar	120.196.100.99	145	707	200
4941	0a0fe2	pandora	120.196.100.99	480	597	200
4951	0ad0s7	kar	120.196.100.99	693	288	200
4961	00fdaf3	pandora	120.196.100.99	249	556	200
4971	00wersa4	pandora	120.196.100.99	234	822	200
4981	0a0fe2	kar	120.196.100.99	868	847	200
4991	00wersa4	kar	120.196.100.99	885	707	200

2、编写MapReduce程序

(1)创建SpeakBean对象

package com.lagou.speak;

import org.apache.hadoop.io.Writable;

import java.io.DataInput;
import java.io.DataOutput;
import java.io.IOException;

// 这个类型是map输出kv中value的类型,需要实现writable序列化接口
public class SpeakBean implements Writable {
    // 定义属性
    private Long selfDuration; // 自由内容时长
    private Long thirdPartDuration; // 第三方内容时长
    private String deviceId; // 设备ID
    private Long sumDuration; // 总时长

    // 空参构造
    public SpeakBean() {
    }

    // 有参构造
    public SpeakBean(Long selfDuration, Long thirdPartDuration, String deviceId) {
        this.selfDuration = selfDuration;
        this.thirdPartDuration = thirdPartDuration;
        this.deviceId = deviceId;
        this.sumDuration = this.selfDuration + this.thirdPartDuration;
    }

    // 序列化方法:就是把内容输出到网络或者文本中
    @Override
    public void write(DataOutput dataOutput) throws IOException {
        dataOutput.writeLong(selfDuration);// 自由内容时长
        dataOutput.writeLong(thirdPartDuration);// 第三方内容时长
        dataOutput.writeUTF(deviceId);// 设备ID
        dataOutput.writeLong(sumDuration);// 总时长
    }

    // 反序列化方法
    @Override
    public void readFields(DataInput dataInput) throws IOException {
        this.selfDuration = dataInput.readLong();
        this.thirdPartDuration = dataInput.readLong();
        this.deviceId = dataInput.readUTF();
        this.sumDuration = dataInput.readLong();
    }

    public Long getSelfDuration() {
        return selfDuration;
    }

    public void setSelfDuration(Long selfDuration) {
        this.selfDuration = selfDuration;
    }

    public Long getThirdPartDuration() {
        return thirdPartDuration;
    }

    public void setThirdPartDuration(Long thirdPartDuration) {
        this.thirdPartDuration = thirdPartDuration;
    }

    public String getDeviceId() {
        return deviceId;
    }

    public void setDeviceId(String deviceId) {
        this.deviceId = deviceId;
    }

    public Long getSumDuration() {
        return sumDuration;
    }

    public void setSumDuration(Long sumDuration) {
        this.sumDuration = sumDuration;
    }

    // 方便观察数据
    @Override
    public String toString() {
        return selfDuration + "\t" + thirdPartDuration + "\t" + deviceId + "\t" + sumDuration;
    }
}

(2)编写Mapper类

package com.lagou.speak;

import org.apache.hadoop.io.*;
import org.apache.hadoop.mapreduce.Mapper;

import java.io.IOException;

// 四个参数:分为两队KV

/**
 * 第一对kv:map输入参数的kv类型; k-->一行文本偏移量,v-->一行文本内容
 * 第二队kv:map输出参数kv类型; k-->map输出的key类型,value:map输出的value类型
 */
public class SpeakMapper extends Mapper<LongWritable, Text, Text, SpeakBean> {
    /**
     * 转换接收到的text数据为String
     * 按照制表符进行切分:得到自有内容时长,第三方内容时长,设备id,封装为SpeakBean
     * 直接输出:k-->设备id,value-->speakBane
     */
    Text device_id = new Text();

    @Override
    protected void map(LongWritable key, Text value, Mapper<LongWritable, Text, Text, SpeakBean>.Context context) throws IOException, InterruptedException {
        // 转换接收到的text数据为String
        String line = value.toString();
        String[] fields = line.split("\t");
        // 自有内容时长
        String selfDuration = fields[fields.length - 3];
        // 第三方内容时长
        String thirdPartDuration = fields[fields.length - 2];
        // 设备id
        String deviceId = fields[1];
        SpeakBean bean = new SpeakBean(Long.parseLong(selfDuration), Long.parseLong(thirdPartDuration), deviceId);

        // 直接输出: k-->设备id, value -->speakBean
        device_id.set(deviceId);
        context.write(device_id, bean);
    }
}

(3)编写Reducer

package com.lagou.speak;

import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Reducer;

import java.io.IOException;

public class SpeakReducer extends Reducer<Text, SpeakBean, Text, SpeakBean> {
    @Override
    protected void reduce(Text key, Iterable<SpeakBean> values, Reducer<Text, SpeakBean, Text, SpeakBean>.Context context) throws IOException, InterruptedException {
        // 定义时长累加的初始值(这是局部变量,只对当前该方法起作用,用完就销毁了)
        Long self_duration = 0L;
        Long third_part_duration = 0L;


        // reduce 方法的key:map输出的是某一个key
        // reduce方法的value:map输出的kv对中相同key的value组成的一个集合
        // reduce逻辑:遍历迭代器累加时长即可
        for (SpeakBean bean : values) {
            Long selfDuration = bean.getSelfDuration();
            Long thirdPartDuration = bean.getThirdPartDuration();
            self_duration += selfDuration;
            third_part_duration += thirdPartDuration;
        }

        // 输出,封装成一个bean对象输出
        SpeakBean bean = new SpeakBean(self_duration, third_part_duration, key.toString());
        context.write(key, bean);
    }
}

(4)编写驱动

package com.lagou.speak;

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.io.*;
import org.apache.hadoop.mapreduce.Job;
import org.apache.hadoop.mapreduce.lib.input.FileInputFormat;
import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;

import java.io.IOException;

public class SpeakDriver {
    public static void main(String[] args) throws IOException, InterruptedException, ClassNotFoundException {
        Configuration conf = new Configuration();
        Job job = Job.getInstance(conf, "speakDriver");
        // 设置jar包本地路径
        job.setJarByClass(SpeakDriver.class);
        // 使用mapper和reducer
        job.setMapperClass(SpeakMapper.class);
        job.setReducerClass(SpeakReducer.class);

        // 设置map输出kv类型
        job.setMapOutputKeyClass(Text.class);
        job.setMapOutputValueClass(SpeakBean.class);

        // 设置reduce输出
        job.setOutputKeyClass(Text.class);
        job.setOutputValueClass(SpeakBean.class);


        // 读取数据路径
        FileInputFormat.setInputPaths(job, new Path(args[0]));
        FileOutputFormat.setOutputPath(job, new Path(args[1]));

        // 提交任务
        boolean flag = job.waitForCompletion(true);

        System.exit(flag ? 0 : 1);
    }
}

注意:本次所用的依赖与上篇博文依赖相同,故省略。

MapReduce编程规范及示例编写_悠然予夏的博客-CSDN博客

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

序列化Writable接口 的相关文章

  • Nginx配置反向代理解决跨域问题

    通过Nginx配置反向代理结果跨域问题 第一步 xff1a 下载Nginx 一 下载 官网下载地址 xff1a http nginx org en download html 我下载的版本 xff1a http nginx org down
  • C++笔试试题讲解(~~~可能是全站唯独一份有解析的~~~)

    C 43 43 笔试题讲解 前言一 面向对象程序概论基本理论笔试题 二 从C到C 43 43 基本理论笔试题 三 类与对象基本理论笔试题 四 继承机制基本理论笔试题 五 多态性和虚函数基本理论笔试题 六 运算符重载基本理论笔试题 七 模板基
  • Linux C/C++ 学习路线(已拿腾讯、百度等)

    Linux C C 从零基础到入门 到熟悉的一些路线 xff0c 对于想走这个方向的同学 xff0c 可以认真看看 xff0c 分享到这里来 xff0c 希望对于正在走 Linux C C 路上的同学能有所帮助 我将大致按照以下的目录 xf
  • python架构之Django学习------基础篇一

    学习环境 xff1a ubuntu16 0 4 1 创建虚拟环境 mkvirtualenv test test为虚拟环境名称 2 删除虚拟环境 rmvirtualenv 3 在制定的虚拟环境上工作 workon test 4 退出虚拟环境
  • 无人机取证——飞行日志分析取证

    前言 随着科技发展日新月异 xff0c 利用无人机犯罪的途径和案例越来越多 xff0c 无人机除了拍照录像的用途外 xff0c 亦可能被有心人士用于运送违法物品等不法行为 xff0c 甚至 xff0c 若是绑上自制炸弹 xff0c 刻意飞去
  • 树莓派4B(4G/8G)安装Ubuntu18.04桌面版+ROS(Melodic)+Realsense SDK(T265+D400系列)

    文章目录 前言一 下载安装树莓派4B镜像 xff08 Ubuntu mate 18 04 xff09 1 树莓派4B服务器镜像2 准备物品3 镜像烧录4 安装桌面基础软件5 为了防止树莓派内存不够 xff0c 需要增加交换空间 xff0c
  • C++程序员这行能干一辈子吗?

    有人说 xff0c 程序员这一行就是吃青春饭 xff0c 不能干一辈子 xff0c 因为程序员面对的是一份高强度的工作 xff0c 同时面临着技术的快速迭代 xff0c 对于身体素质 学习能力等都有很高的要求 xff0c 所以很多人都面临入
  • 学习记录--PID(角度双环)

    一 xff0c 理论理解 参考 xff1a 从不懂到会用 xff01 PID从理论到实践 哔哩哔哩 bilibili 1 三个参数 Kp xff1a 比例系数 xff1a pid gt p out 61 pid gt kp pid gt e
  • FreeRTOS多任务调度器原理

    1 xff1a 多任务启动 1 xff1a 创建空闲任务 2 xff1a 配置SysTick和PendSV为最低优先级 3 xff1a 配置SysTick寄存器 4 xff1a 调用SVC中断 2 xff1a SVC业务流程 1 xff1a
  • 立创EDA使用教程

    1 xff1a 绘制原理图 1 1 放置元件 立创EDA可以在线编辑 xff0c 不同于AD和PADS需要自己绘制或者导入封装 立创可以直接在线拉取别人的封装过来使用 xff0c 当然也可以自己绘制 1 2添加导线和网络 W是连线 xff0
  • ubuntu电脑共享文件夹给另一台windows电脑

    1 xff1a 安装samba工具 sudo apt get install samba samba version 2 xff1a 配置共享文件夹路径 vi etc samba smb conf 在文件末尾添加 share comment
  • FreeRTOS 学习(一)

    一 使用FreeRTOS点亮LED灯 在STM32有一定基础 xff0c 在开始学习操作系统的小白 xff0c 介绍使用STM32用操作系统点亮第一盏灯 xff0c 这也是学习单片机最开始的地方 xff1b 下面来图文配置 xff0c 我这
  • FreeRTOS的启动流程,编码风格与调试方法

    一 启动流程 RTOS主要有两种比较流行的启动方式 xff0c 下面会通过伪代码讲解两种启动方式的区别 xff0c 然后看看STM32cubeMX集成的FreeRTOS采用哪种启动方式 1 方法一 xff1a 在main函数中将硬件初始化
  • 2021AIOps挑战赛|基于移动通信网络运维中的多指标时空序列预测

    2021国际AIOps挑战赛决赛暨AIOps创新高峰论坛于2021年5月13日在北京成功举行 本文根据中国移动研究院首席科学家 人工智能与智慧运营中心总经理冯俊兰博士现场发言纪要整理而成 演讲内容 各位领导 xff0c 各位老师 xff0c
  • python架构之Django学习------基础篇二

    学习环境 xff1a ubuntu16 0 4 1 创建项目 django admin startproject studypy studypy为项目名称 注意 xff1a 项目创建完成之后 xff0c 会有一个文件夹和项目名称一样 xff
  • VNC配置端口占用

    问题描述 xff1a 配置VNC环境时 执行systemctl配置端口发现有些端口被占用 systemctl status vncserver span class token operator span user 64 span clas
  • SNMP概述

    目录 SNMP的架构 SNMP的版本 SNMPv1 v2c 报文结构 操作类型 工作原理 SNMPv3 报文结构 SNMPv3体系结构 工作原理 用户组和用户名 SNMP的配置 基本配置 v2c配置 SNMPv3配置 xff08 USM用户
  • (18)ROS学习-TF坐标变换之静态坐标变换

    1 坐标msg消息 xff1a 订阅发布模型中数据载体 msg 是一个重要实现 xff0c 首先需要了解一下 xff0c 在坐标转换实现中常用的 msg geometry msgs TransformStamped和geometry msg
  • CentOS8.4 Samba服务配置

    目录 Samba服务简介 基本操作 Samba服务主配置文件 全局配置参数 局部配置参数 题一 创建共享资源 创建系统用户组和系统用户并查看 对系统用户设置Samba密码 查看已设置Samba密码的用户 建立共享资源目录并分配权限 修改主配
  • X86汇编语言从实模式到保护模式(Linux环境搭建)

    前言 在学完了计算机组成原理和王爽的汇编语言后 xff0c 虽然操作系统的理论知识能看懂了 xff0c 但做起xv6和ucore实验还是有一定难度 xff0c 所以还是得补一补x86汇编的知识 环境搭建 xff1a 因为书中的工具包和环境都

随机推荐

  • 【机器学习】二分类算法实现及算法精度比较

    文章目录 一 数据集选择1 感知机2 K近邻 xff08 knn xff09 3 朴素贝叶斯4 决策树id35 逻辑斯蒂回归总结 一 数据集选择 鸢尾花数据集 iris data Iris数据集是常用的分类实验数据集 xff0c 由Fish
  • OpenStack实战

    开源OpenStack实战 公有云 一个用户就是一个VPC虚拟私有云 在同一个VPC中的不同子网可以互通 不同VPC之间不能互通 一个VPC 就属于regin一个路由器 VPC不可以跨Regin 两个租户是不可以打通的 Regin xff1
  • VScode怎样从gitee上拉取项目?很简单,赶快学起来

    1 xff0c 在你写项目的磁盘里新建文件夹 2 xff0c 登录Gitee 3 xff0c 复制克隆 下载处的地址 4 xff0c 打开VScode xff0c 在新建的文件夹下 xff0c 打开终端 5 xff0c 运行 git clo
  • 《操作系统》-进程的定义组成和特征

    进程的定义组成和特征 进程的定义 程序 xff1a 就是一个指令序列 早期的计算机只支持单道程序 引用多道程序技术 xff1a 为了方便操作系统管理完成各程序并发执行 xff0c 引入了进程和进程实体的概念 进程实体 xff08 进程映像
  • 【完整教程】在win10平台下使用d435i深度相机读取数据并保存到本地,以便进行后续3D点云处理

    1 下载RealSense SDK 2 0 进入网址 xff1a RealSense SDK 2 0 直接拉到网站最下端 xff0c 在Asset下可以看到很多exe可执行软件 xff0c 由于我的电脑是win10 xff0c 所以选择第三
  • python架构之Django学习(管理站点)------基础篇三

    学习环境 xff1a ubuntu16 0 4 1 创建管理员 http 127 0 0 1 8000 admin python manage py createsuperuser 创建用户名密码 注册
  • VMware虚拟机安装Linux教程(超详细)

    一 安装 VMware 官方正版VMware下载 xff08 16 pro xff09 xff1a https www aliyundrive com s wF66w8kW9ac 下载Linux系统镜像 xff08 阿里云盘不限速 xff0
  • WIFI模块——ESP8266

    1 ESP8266简介 ESP8266是一款高性能的WIFI串口模块 xff0c 内部集成MCU能实现单片机之间串口通信 xff0c 是目前使用最广泛的一种WIFI模块之一 可以简单理解为一个WIFI转串口的设备 xff0c 不用知道太多W
  • 姿态传感器——MPU6050

    1 MPU6050介绍 MPU6050是由三个陀螺仪和三个加速度传感器组成的6轴运动处理组件 xff0c 是一款六轴 xff08 三轴加速度 43 三轴角速度 xff08 陀螺仪 xff09 xff09 传感器 内部主要结构 陀螺仪 加速度
  • Arch | Nodejs 配置

    今天在使用 npm 时出现了一些错误 xff0c 之前那个文章内容有点多 xff0c 找起来比较麻烦 xff0c 所以这里单独把一些软件的配置单独拉出来写一个文章 参考 ArchWiki Node js 安装 如果没有多版本需求的话 xff
  • 基于I2C协议利用STM32进行温湿度传感器的数据采集

    目录 一 I2C总线通信协议的介绍1 I2C简介2 I2C总线时序图3 五种速率4 四种信号5 I2C的优缺点6 软件IIC和硬件IIC 二 创建工程1 实验目的2 工具的选择3 相关代码分析 三 线路的连接四 结果实现五 总结参考文献 一
  • 海康嵌入式软件面试经验(已拿offer)

    本科双非 xff0c 计算机类专业学渣 xff0c 0实习经历 xff0c 复习考研的时候学了一遍408 xff0c 强化阶段学的心态崩了就边复习边投简历 xff0c 之前投了好几次体面厂的测试岗都没进面试 xff0c 投开发岗反而进了 7
  • 前端浏览器渲染原理及优化

    文章目录 一 浏览器组成1 对浏览器内核的理解2 浏览器的主要组成部分 二 浏览器渲染原理1 浏览器的渲染过程步骤一 xff1a 步骤二 xff1a 步骤三 xff1a 步骤四 xff1a 步骤五 xff1a 2 相关概念 重排 更新元素的
  • Docker+github actions部署前端项目

    Docker 43 github actions部署前端项目 文章目录 Docker 43 github actions部署前端项目前言1 Docker相关文件配置2 创建自己的dokcer hub仓库3 yml文件配置 前言 在进行本篇实
  • pytorch可视化之:可视化网络结构+CNN可视化+TensorBorad使用

    Pytorch学习第五部分 xff1a pytorch可视化 Let 39 s go 一 可视化网络结构1 1 Resnet18结构1 2 使用torchinfo可视化网络结构1 2 1 torchinfo安装1 2 2 torchinfo
  • spring中用到的设计模式及应用场景

    spring中用到的设计模式及应用场景 1 工厂模式 xff1a 在Beanfactory和applicationContext创建中都用到了 2 单例模式 xff1a Bean默认就是单例模式 单例模式只允许创建一个对象 xff0c 获取
  • python架构之Django学习------流程总结

    python架构之Django学习 一 二 三 开发流程 xff1a step1 创建虚拟环境 mkvirtrualenv step2 安装django pip install django step3 创建项目 python manage
  • PDU 发送短信3

    T指令收发短信主要有两种模式 xff1a Text模式和PDU xff08 Protocol Data Unit xff0c 协议数据单元 xff09 模式 使用Text模式收发短信代码简单 xff0c 很容易实现 xff0c 最大缺点不支
  • Linux驱动---休眠与唤醒

    Linux 休眠与唤醒 文章目录 Linux 休眠与唤醒前言一 休眠 唤醒 机制二 重要的函数及其数据结构wait内核函数唤醒函数 三 驱动编程步骤附录 xff08 源码 xff09 前言 当应用程序必须等待某个时间发生 xff0c 比如必
  • 序列化Writable接口

    基本序列化类型往往不能满足所有需求 xff0c 比如在Hadoop框架内部传递一个自定义bean对象 xff0c 那么该对象就需要实现Writable序列化接口 实现Writable序列化步骤如下 xff08 1 xff09 必须实现Wri