后端开发的小坑们
数据库
sql
给现有的表新增一列报错:TypeError: Cannot read properties of undefined (reading ‘isNullable’)
错误原因:
alter table table_name add col VARCHAR (255) not null
要求非空,但是之前的数据这一列都空。
解决:去掉 not null创建即可
Hive
Hive不支持分页查询
LIMIT 1, 10
Spring
MyBatis
大于号<
小于号>
不合法
**现象:**一堆错误日志,大致都是bean注入失败
**解决:**1.<
用 <
代替,>
用 >
代替
2. 不用<script>
的形式表示sql,直接用“sql”
大数据
Spark
Total size of serialized results of xxx tasks (xxx MB) is bigger than spark.driver.maxResultSize (1024.0 MB)
原因:executor执行sql后,.collect()
把executor的数据收集到driver上,数据量过高导致超过driver默认的collect大小上限(1G)。
解决办法:将spark.driver.maxResultSize设置更大一点
--conf spark.driver.maxResultSize=4G
Maven
clean, compile, build, install, package
clean: 执行该命令会删除项目路径下的target文件,但是不会删除本地的maven仓库已经生成的jar文件
compile: 编译命令,只编译选定的目标,不管之前是否已经编译过,会在你的项目路径下生成一个target目录,在该目录中包含一个classes文件夹,里面全是生成的class文件及字节码文件.maven会自动帮我们下载依赖jar,为代码生成字节码文件等.
build: 对整个工程进行彻底的重新编译
package: 这个命令会在你的项目路径下创建一个target目录,并且拥有compile命令的功能进行编译,同时会在target目录下(本地并没有)生成项目的jar/war文件. package = compile + 打包生成ja包. 如果a项目依赖于b项目,打包b项目时,只会打包到b项目下target下,编译a项目时就会报错,因为找不到所依赖的b项目,说明a项目在本地仓库是没有找到它所依赖的b项目
install: 包含了package命令功能,不但会在项目路径下生成class文件和jar包,同时会在你的本地maven仓库生成jar文件,供其他项目使用(如果没有设置过maven本地仓库,一般在用户/.m2目录下。如果a项目依赖于b项目,那么install b项目时,会在本地仓库同时生成pom文件和jar文件,解决了上面打包package出错的问题).
对于scala
的项目:
mvn clean scala:compile compile package
原因是mvn clean package默认只处理java源代码的编译、打包,而不管scala,所以编译时遇到Hello这个由scala语言编写的class,此时scala还没编译生成class,所以找不到相应的调用入口.